Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[XP] Wecoc Script Scene Base (WSSB)

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [XP] Wecoc Script Scene Base (WSSB)

Mensaje por Wecoc el 2016-02-14, 01:47

He creado un módulo que modifica el modo en el que funcionan algunas escenas en el RPG maker XP, de modo que se permiten muchas más opciones en ellas.

Puesto que es una reescritura de los scripts base (similar al SDK en varios sentidos) puede tener algunos problemas de incompatibilidad; la mayoría se pueden arreglar pero se necesitan conocimientos de script. Lo que hace es atribuir nuevas llamadas de script desde evento así que para usar sus funciones también hay que tener unas bases de script.

En resumen; no es para novatos.

He creado una demo para mostraros algunas de sus novedades, y los scripts vienen con comentarios en español.
Al igual que el SDK, es un script que no modifica el aspecto básico del juego pero da pie a nuevos scripts basados en sus métodos.
En la demo ya puse muchos, los cuales se pueden quitar si no interesa pero es recomendable que éstos permanezcan activos (casi se pueden considerar parte del script troncal)

Si queréis algún add-on al sistema o que os arregle alguna incompatibilidad decídmelo.
Os animo a crear vosotros add-ons y añadirlos para hacer éste proyecto más grande. Puede que por ahora tras probar la demo tampoco os parezca muy innovador pero con scripts añadidos la cosa cambie.

Ésta vez pido créditos si lo usáis, y pedidme permiso si queréis usarlo en un juego comercial.
Créditos: Wecoc

La versión del script Core es la 1.0 como se indica en el mismo.
Si no hay bugs, ésta ya sería la versión definitiva.

WSSB (v1.0).zip

Espero que os guste ;D
avatar
Wecoc
Administrador
Administrador



Créditos 12297

Gracias : 648

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Wecoc Script Scene Base (WSSB)

Mensaje por Wecoc el 2016-02-19, 21:50

Como dije ésta base de scripts (WSSB) va a base de más scripts añadidos, o add-ons.
He hecho uno para que Scene_Debug tenga más opciones, ya que WSSB ya facilitaba algunas de ellas.
Aún así, aún usa poco lo que el sistema viene a ofrecer, así que se pueden hacer scripts más innovadores.

En fin, aquí lo tenéis:

Código:
#==============================================================================
# ** [WSSB] Scene_Debug Advanced
#------------------------------------------------------------------------------
# Autor: Wecoc
# Fecha: 19-Feb-2016
#==============================================================================
#
# - Éste script requiere el Wecoc Scene Script Base (WSSB) v1.0
# - Éste script requiere el script Scene_Debug de WSSB
#
#----- INFORMACIÓN GENERAL ----------------------------------------------------
#
# Éste script es un Add-On al Scene_Debug de WSSB que permite modificar más
# cosas a parte de los interruptores y las variables.
#
# Además contiene un apartado llamado Otros que está vacío por defecto pero
# permite añadir los 'plugins' especiales de Scene_Debug que se quieran,
# mediante otros scripts debajo de éste.
#
#==============================================================================

begin
  # Definir script WSSB "Scene_Debug#Adv"
  WSSB.define_script("Scene_Debug#Adv", true)
rescue
  raise "Éste script requiere el WSSB Core Script"
end

unless WSSB.include_script("Scene_Debug")
  raise "Éste script requiere el WSSB - Scene_Debug"
end

#==============================================================================
# ** Módulo WSSB
#==============================================================================

module WSSB
  @_debug_plugins = []
  #--------------------------------------------------------------------------
  # * Definir nuevo plugin
  #--------------------------------------------------------------------------
  def self.define_debug_plugin(name)
    @_debug_plugins.push(name)
    @_debug_plugins.sort!.uniq!
  end
  #--------------------------------------------------------------------------
  # * Comprobar si un plugin está activo
  #--------------------------------------------------------------------------
  def self.include_debug_plugin(name)
    return @_debug_plugins.include?(name)
  end
  #--------------------------------------------------------------------------
  # * Obtener los plugins
  #--------------------------------------------------------------------------
  def self.debug_plugins
    return @_debug_plugins
  end
end

#==============================================================================
# ** Game_Temp
#==============================================================================

class Game_Temp
  attr_accessor :battle_test
  alias wssb_battle_test_ini initialize unless $@
  def initialize
    wssb_battle_test_ini
    @battle_test = false
  end
end

#==============================================================================
# ** Game_Party
#==============================================================================

class Game_Party
  #--------------------------------------------------------------------------
  # * Sumar cierto número de pasos
  #--------------------------------------------------------------------------
  def gain_steps(n)
    @steps = [[@steps + n, 0].max, 9999999].min
  end
  #--------------------------------------------------------------------------
  # * Restar cierto número de pasos
  #--------------------------------------------------------------------------
  def lose_steps(n)
    gain_steps(-n)
  end
end

#==============================================================================
# ** Window_DebugRight
#==============================================================================

class Window_DebugRight < Window_Selectable
  
  attr_accessor :actor_id
  
  alias wssb_debug_adv_ini initialize unless $@
  def initialize
    @actor_id = 1
    wssb_debug_adv_ini
  end
  
  def draw_item(index)
    case @mode
    when 2 # Item
      item = $data_items[index + 1]
      number = $game_party.item_number(item.id)
    when 3 # Weapon
      item = $data_weapons[index + 1]
      number = $game_party.weapon_number(item.id)
    when 4 # Armor
      item = $data_armors[index + 1]
      number = $game_party.armor_number(item.id)
    end
    self.contents.font.color = normal_color
    x = 4
    y = index * 32
    rect = Rect.new(x, y, self.width - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(item.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
    self.contents.draw_text(x + 380, y, 24, 32, number.to_s, 2)
  end
  
  def refresh
    self.contents.clear
    case @mode
    when 0 # Interruptores
      refresh_switches
    when 1 # Variables
      refresh_variables
    when 2 # Objetos
      refresh_items
    when 3 # Armas
      refresh_weapons
    when 4 # Protectores
      refresh_armors
    when 5 # Actores
      refresh_actors
    when 6 # Grupo
      refresh_party
    when 7 # Batalla
      refresh_battle
    when 8 # Mapa
      refresh_map
    when 9 # Otros
      refresh_plugins
    end
  end
  
  #--------------------------------------------------------------------------
  # * Interruptores
  #--------------------------------------------------------------------------
  def refresh_switches
    @item_max = $data_system.switches.size - 1
    self.contents = Bitmap.new(self.width - 32, @item_max * 32)
    for i in 0...($data_system.switches.size - 1)
      name = $data_system.switches[i + 1]
      if name == nil
        name = ""
      end
      width = self.contents.text_size("[ OFF ]").width
      w = self.width - 40
      self.contents.font.color = normal_color
      id_text = sprintf("%04d: ", i + 1)
      self.contents.draw_text(4, i * 32, w - width, 32, id_text + name)
      self.contents.draw_text(w - width, i * 32, 32, 32, "[")
      self.contents.draw_text(w, i * 32, 32, 32, "]")
      status = $game_switches[i] ? "ON" : "OFF"
      if status == "ON"
        self.contents.font.color = ENABLED_COLOR
      else
        if $game_system.game_switches_used.include?(@top_id + i)
          self.contents.font.color = DISABLED_COLOR
        else
          self.contents.font.color = disabled_color
        end
      end
      self.contents.draw_text(w - width, i * 32, width + 4, 32, status, 1)
    end
  end
  #--------------------------------------------------------------------------
  # * Variables
  #--------------------------------------------------------------------------
  def refresh_variables
    @item_max = $data_system.variables.size - 1
    self.contents = Bitmap.new(self.width - 32, @item_max * 32)
    for i in 0...($data_system.variables.size - 1)
      name = $data_system.variables[i + 1]
      width = self.contents.text_size("[Invalid]").width
      w = self.width - 40
      self.contents.font.color = normal_color
      id_text = sprintf("%04d: ", i + 1)
      self.contents.draw_text(4, i * 32, w - width, 32, id_text + name)
      if $game_variables[i].is_a?(Integer)
        status = $game_variables[i].to_s
        if $game_system.game_variables_used.include?(i)
          self.contents.font.color = ENABLED_COLOR
        else
          self.contents.font.color = disabled_color
        end
      else
        status = "[Invalid]"
        self.contents.font.color = DISABLED_COLOR
      end
      self.contents.draw_text(w - width, i * 32, width, 32, status, 2)
    end
  end
  #--------------------------------------------------------------------------
  # * Objetos
  #--------------------------------------------------------------------------
  def refresh_items
    @item_max = $data_items.size - 1
    self.contents = Bitmap.new(self.width - 32, @item_max * 32)
    for i in 0...($data_items.size - 1)
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  # * Armas
  #--------------------------------------------------------------------------
  def refresh_weapons
    @item_max = $data_weapons.size - 1
    self.contents = Bitmap.new(self.width - 32, @item_max * 32)
    for i in 0...($data_weapons.size - 1)
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  # * Protectores
  #--------------------------------------------------------------------------
  def refresh_armors
    @item_max = $data_armors.size - 1
    self.contents = Bitmap.new(self.width - 32, @item_max * 32)
    for i in 0...($data_armors.size - 1)
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  # * Actores
  #--------------------------------------------------------------------------
  def refresh_actors
    actor = $game_actors[@actor_id]
    s1 = "En Grupo"
    s2 = "Nivel"
    s3 = $data_system.words.weapon
    s4 = $data_system.words.armor1
    s5 = $data_system.words.armor2
    s6 = $data_system.words.armor3
    s7 = $data_system.words.armor4
    s8 = "Curar Todo"
    commands = [s1, s2, s3, s4, s5, s6, s7, s8]
    @item_max = commands.size
    self.contents = Bitmap.new(self.width - 32, self.height - 32)
    self.contents.font.color = normal_color
    
    bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
    cw = bitmap.width / 4
    ch = bitmap.height / 4
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(4, self.height - ch - 32, bitmap, src_rect)
    self.contents.draw_text(cw + 16, self.height - ch - 24, 406, 32, actor.name)
    
    width = self.contents.text_size("[ OFF ]").width
    w = self.width - 40
    # En Grupo
    i = 0
    self.contents.draw_text(4, i * 32, w - width, 32, s1)
    self.contents.draw_text(w - width, i * 32, 32, 32, "[")
    self.contents.draw_text(w, i * 32, 32, 32, "]")
    status = $game_party.actors.include?(actor) ? "ON" : "OFF"
    if status == "ON"
      self.contents.font.color = ENABLED_COLOR
    else
      if $game_system.game_switches_used.include?(@top_id + i)
        self.contents.font.color = DISABLED_COLOR
      else
        self.contents.font.color = disabled_color
      end
    end
    self.contents.draw_text(w - width, i * 32, width + 4, 32, status, 1)
    # Nivel
    i = 1
    self.contents.font.color = normal_color
    self.contents.draw_text(4, i * 32, w - width, 32, s2)
    status = actor.level.to_s
    self.contents.draw_text(w - width, i * 32, width, 32, status, 2)
    # Arma
    i = 2
    self.contents.font.color = system_color
    self.contents.draw_text(4, i * 32, w - width, 32, s3)
    item = $data_weapons[actor.weapon_id]
    self.contents.font.color = normal_color
    unless item == nil
      bitmap = RPG::Cache.icon(item.icon_name)
      self.contents.blt(100, i * 32 + 4, bitmap, Rect.new(0, 0, 24, 24))
      self.contents.draw_text(128, i * 32, 212, 32, item.name, 0)
      status = item.id.to_s
    else
      status = "0"
    end
    self.contents.draw_text(w - width, i * 32, width, 32, status, 2)
    # Escudo
    i = 3
    self.contents.font.color = system_color
    self.contents.draw_text(4, i * 32, w - width, 32, s4)
    item = $data_armors[actor.armor1_id]
    self.contents.font.color = normal_color
    unless item == nil
      bitmap = RPG::Cache.icon(item.icon_name)
      self.contents.blt(100, i * 32 + 4, bitmap, Rect.new(0, 0, 24, 24))
      self.contents.draw_text(128, i * 32, 212, 32, item.name, 0)
      status = item.id.to_s
    else
      status = "0"
    end
    self.contents.draw_text(w - width, i * 32, width, 32, status, 2)
    # Casco
    i = 4
    self.contents.font.color = system_color
    self.contents.draw_text(4, i * 32, w - width, 32, s5)
    item = $data_armors[actor.armor2_id]
    self.contents.font.color = normal_color
    unless item == nil
      bitmap = RPG::Cache.icon(item.icon_name)
      self.contents.blt(100, i * 32 + 4, bitmap, Rect.new(0, 0, 24, 24))
      self.contents.draw_text(128, i * 32, 212, 32, item.name, 0)
      status = item.id.to_s
    else
      status = "0"
    end
    self.contents.draw_text(w - width, i * 32, width, 32, status, 2)
    # Armadura
    i = 5
    self.contents.font.color = system_color
    self.contents.draw_text(4, i * 32, w - width, 32, s6)
    item = $data_armors[actor.armor3_id]
    self.contents.font.color = normal_color
    unless item == nil
      bitmap = RPG::Cache.icon(item.icon_name)
      self.contents.blt(100, i * 32 + 4, bitmap, Rect.new(0, 0, 24, 24))
      self.contents.draw_text(128, i * 32, 212, 32, item.name, 0)
      status = item.id.to_s
    else
      status = "0"
    end
    self.contents.draw_text(w - width, i * 32, width, 32, status, 2)
    # Protector
    i = 6
    self.contents.font.color = system_color
    self.contents.draw_text(4, i * 32, w - width, 32, s7)
    item = $data_armors[actor.armor4_id]
    self.contents.font.color = normal_color
    unless item == nil
      bitmap = RPG::Cache.icon(item.icon_name)
      self.contents.blt(100, i * 32 + 4, bitmap, Rect.new(0, 0, 24, 24))
      self.contents.draw_text(128, i * 32, 212, 32, item.name, 0)
      status = item.id.to_s
    else
      status = "0"
    end
    self.contents.draw_text(w - width, i * 32, width, 32, status, 2)
    # Curar todo
    i = 7
    self.contents.font.color = normal_color
    self.contents.draw_text(4, i * 32, w - width, 32, s8)
  end
  #--------------------------------------------------------------------------
  # * Grupo
  #--------------------------------------------------------------------------
  def refresh_party
    @item_max = 2
    self.contents = Bitmap.new(self.width - 32, @item_max * 32)
    # Dinero
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 0, 320, 32, "Dinero")
    cx = contents.text_size($data_system.words.gold).width
    self.contents.draw_text(286, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(408-cx, 0, cx, 32, $data_system.words.gold, 2)
    # Pasos
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 32, 320, 32, "Pasos")
    self.contents.draw_text(308, 32, 100, 32, $game_party.steps.to_s, 2)
  end
  #--------------------------------------------------------------------------
  # * Batalla
  #--------------------------------------------------------------------------
  def refresh_battle
    @item_max = $data_troops.size - 1
    self.contents = Bitmap.new(self.width - 32, @item_max * 32)
    for i in 0...($data_troops.size - 1)
      name = $data_troops[i + 1].name
      if name == nil
        name = ""
      end
      id_text = sprintf("%04d: ", i + 1)
      self.contents.draw_text(4, i * 32, self.width - 32, 32, id_text + name)
    end
  end
  #--------------------------------------------------------------------------
  # * Mapa
  #--------------------------------------------------------------------------
  def refresh_map
    map_infos = load_data("Data/MapInfos.rxdata")
    data_maps = map_infos.values
    @item_max = data_maps.size
    self.contents = Bitmap.new(self.width - 32, @item_max * 32)
    data_maps.sort!{|b,a| b.order - a.order}
    data_maps.unshift(nil)
    for i in 0...(data_maps.size - 1)
      self.contents.font.color = normal_color
      name = data_maps[i + 1].name
      map_id = map_infos.invert[data_maps[i + 1]]
      id_text = "ID:" + sprintf("%03d", map_id)
      self.contents.draw_text(4, i * 32, self.width - 32, 32, id_text)
      if map_id == $game_map.map_id
        self.contents.font.color = crisis_color
      end
      d = 0
      current_map = map_infos[map_id]
      until current_map.parent_id == 0
        d += 1
        current_map = map_infos[current_map.parent_id]
      end
      self.contents.draw_text(72 + 24 * d, i * 32, self.width - 32, 32, name)
    end
  end
  #--------------------------------------------------------------------------
  # * Otros
  #--------------------------------------------------------------------------
  def refresh_plugins
    plugins = WSSB.debug_plugins
    @item_max = plugins.size > 0 ? plugins.size : 1
    self.contents = Bitmap.new(self.width - 32, @item_max * 32)
    for i in 0...plugins.size
      self.contents.draw_text(4, i * 32, self.width - 32, 32, plugins[i])
    end
  end
end

#==============================================================================
# ** Scene_Debug
#==============================================================================

class Scene_Map
  alias wssb_battle_test_main main unless $@
  def main
    if $game_temp.battle_test == true
      $game_temp.battle_test = false
      for i in 0...$game_party.actors.size
        actor = $game_party.actors[i]
        actor.recover_all
      end
    end
    wssb_battle_test_main
  end
  #--------------------------------------------------------------------------
  # * Iniciar Debug
  #--------------------------------------------------------------------------
  def start_debug
    # Crear left window
    s1 = "Interruptores"
    s2 = "Variables"
    s3 = "Objetos"
    s4 = "Armas"
    s5 = "Protectores"
    s6 = "Actores"
    s7 = "Grupo"
    s8 = "Batalla"
    s9 = "Mapa"
    s10 = "Otros" # Plugins
    commands = [s1, s2, s3, s4, s5, s6, s7, s8, s9, s10]
    create_window("left_window", Window_Command, 192, commands)
    @left_window = @scene_windows["left_window"]
    @left_window.height = 480
    if WSSB.debug_plugins.size == 0
      @left_window.disable_item(9)
    end
    # Crear right window
    create_window("right_window", Window_DebugRight)
    @right_window = @scene_windows["right_window"]
    # Crear help window
    create_window("help_window", Window_Base, 192, 352, 448, 128)
    @help_window = @scene_windows["help_window"]
    @help_window.contents = Bitmap.new(406, 96)
    # Definir estado actual
    @left_window.index = $game_temp.debug_index
    # Ejecutar transición
    Graphics.transition
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    update_base_debug
    # Update Scene_Debug
    if current_scene == "Scene_Debug"
      # Definir estado actual
      @right_window.mode = @left_window.index
      # Si left window está activa update_debug_left
      if @left_window.active
        update_debug_left
        return
      end
      # Si right window está activa update_debug_right
      if @right_window.active
        update_debug_right
        return
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Update (left window)
  #--------------------------------------------------------------------------
  def update_debug_left
    # Desactivar si el input en ventanas está inactivo
    return if input_disabled?
    # Si pulsas B
    if Input.trigger?(Input::B)
      # Cerrar escena
      $game_system.se_play($data_system.cancel_se)
      clear_scenes
      return
    end
    # Si pulsas C
    if Input.trigger?(Input::C)
      # Activar right window
      case @left_window.index
      when 0 # Interruptores
        text1 = "C (Intro) : Activar / Desactivar"
        @help_window.contents.draw_text(4, 0, 406, 32, text1)
      when 1 # Variables
        text1 = "CTRL : Sumar/Restar de 10 en 10"
        text2 = "Z : Reset   S : Show Invalid"
        @help_window.contents.draw_text(4, 0, 406, 32, text1)
        @help_window.contents.draw_text(4, 32, 406, 32, text2)
      when 2, 3, 4, 6 # Objetos, Armas, Protectores, Grupo
        text1 = "CTRL : Sumar/Restar de 10 en 10"
        text2 = "A : Mínimo   S : Máximo"
        @help_window.contents.draw_text(4, 0, 406, 32, text1)
        @help_window.contents.draw_text(4, 32, 406, 32, text2)
      when 5 # Actores
        text = "R / L : Cambiar actor"
        @help_window.contents.draw_text(4, 0, 406, 32, text)
      when 7 # Batalla
        text1 = "C (Intro) : Probar batalla"
        @help_window.contents.draw_text(4, 0, 406, 32, text1)
      when 8 # Mapa
        text1 = "C (Intro) : Teletransportar"
        @help_window.contents.draw_text(4, 0, 406, 32, text1)
      when 9 # Otros
        if WSSB.debug_plugins.size == 0
          $game_system.se_play($data_system.buzzer_se)
          return
        end
      end
      $game_system.se_play($data_system.decision_se)
      @left_window.active = false
      @right_window.active = true
      @right_window.index = 0
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Update (right window)
  #--------------------------------------------------------------------------
  def update_debug_right
    # Desactivar si el input en ventanas está inactivo
    return if input_disabled?
    # Si pulsas B
    if Input.trigger?(Input::B)
      # Ir a left window
      $game_system.se_play($data_system.cancel_se)
      @left_window.active = true
      @right_window.active = false
      @right_window.index = -1
      @help_window.contents.clear
      return
    end
    case @right_window.mode
    when 0 # Interruptores
      update_switches
    when 1 # Variables
      update_variables
    when 2 # Objetos
      update_items
    when 3 # Armas
      update_weapons
    when 4 # Protectores
      update_armors
    when 5 # Actores
      update_actors
    when 6 # Grupo
      update_party
    when 7 # Batalla
      update_battle
    when 8 # Mapa
      update_map
    when 9 # Otros
      update_plugins
    end
  end
  #--------------------------------------------------------------------------
  # * Interruptores
  #--------------------------------------------------------------------------
  def update_switches
    current_id = @right_window.index
    # Si pulsas C
    if Input.trigger?(Input::C)
      # Cambiar estado ON <-> OFF
      $game_system.se_play($data_system.decision_se)
      $game_switches[current_id] = (not $game_switches[current_id])
      @right_window.refresh
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Variables
  #--------------------------------------------------------------------------
  def update_variables
    current_id = @right_window.index
    # Si pulsas Derecha
    if Input.repeat?(Input::RIGHT)
      if !$game_variables[current_id].is_a?(Integer)
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.cursor_se)
      n = 1
      n *= 10  if Input.press?(Input::CTRL)
      $game_variables[current_id] += n
      @right_window.refresh
      return
    end
    # Si pulsas Izquierda
    if Input.repeat?(Input::LEFT)
      if !$game_variables[current_id].is_a?(Integer)
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.cursor_se)
      n = 1
      n *= 10  if Input.press?(Input::CTRL)
      $game_variables[current_id] -= n
      @right_window.refresh
      return
    end
    # Si pulsas A
    if Input.trigger?(Input::A)
      # Volver la variable a 0
      $game_system.se_play($data_system.decision_se)
      $game_variables[current_id] = 0
      @right_window.refresh
      return
    end
    # Si pulsas Y
    if Input.trigger?(Input::Y)
      # Mostrar variable en una ventana a parte
      if !$game_variables[current_id].is_a?(Integer)
        print $game_variables[current_id]
        return
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Objetos
  #--------------------------------------------------------------------------
  def update_items
    current_id = @right_window.index
    # Si pulsas Derecha
    if Input.repeat?(Input::RIGHT)
      item = $data_items[current_id + 1]
      $game_system.se_play($data_system.cursor_se)
      n = 1
      n *= 10  if Input.press?(Input::CTRL)
      $game_party.gain_item(item.id, n)
      @right_window.refresh
      return
    end
    # Si pulsas Izquierda
    if Input.repeat?(Input::LEFT)
      item = $data_items[current_id + 1]
      $game_system.se_play($data_system.cursor_se)
      n = 1
      n *= 10  if Input.press?(Input::CTRL)
      $game_party.lose_item(item.id, n)
      @right_window.refresh
      return
    end
    # Si pulsas Y
    if Input.trigger?(Input::Y)
      item = $data_items[current_id + 1]
      $game_system.se_play($data_system.cursor_se)
      $game_party.gain_item(item.id, 99)
      @right_window.refresh
      return
    end
    # Si pulsas X
    if Input.trigger?(Input::X)
      item = $data_items[current_id + 1]
      $game_system.se_play($data_system.cursor_se)
      $game_party.lose_item(item.id, 99)
      @right_window.refresh
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Armas
  #--------------------------------------------------------------------------
  def update_weapons
    current_id = @right_window.index
    # Si pulsas Derecha
    if Input.repeat?(Input::RIGHT)
      item = $data_weapons[current_id + 1]
      $game_system.se_play($data_system.cursor_se)
      n = 1
      n *= 10  if Input.press?(Input::CTRL)
      $game_party.gain_weapon(item.id, n)
      @right_window.refresh
      return
    end
    # Si pulsas Izquierda
    if Input.repeat?(Input::LEFT)
      item = $data_weapons[current_id + 1]
      $game_system.se_play($data_system.cursor_se)
      n = 1
      n *= 10  if Input.press?(Input::CTRL)
      $game_party.lose_weapon(item.id, n)
      @right_window.refresh
      return
    end
    # Si pulsas Y
    if Input.trigger?(Input::Y)
      item = $data_weapons[current_id + 1]
      $game_system.se_play($data_system.cursor_se)
      $game_party.gain_weapon(item.id, 99)
      @right_window.refresh
      return
    end
    # Si pulsas X
    if Input.trigger?(Input::X)
      item = $data_weapons[current_id + 1]
      $game_system.se_play($data_system.cursor_se)
      $game_party.lose_weapon(item.id, 99)
      @right_window.refresh
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Protectores
  #--------------------------------------------------------------------------
  def update_armors
    current_id = @right_window.index
    # Si pulsas Derecha
    if Input.repeat?(Input::RIGHT)
      item = $data_armors[current_id + 1]
      $game_system.se_play($data_system.cursor_se)
      n = 1
      n *= 10  if Input.press?(Input::CTRL)
      $game_party.gain_armor(item.id, n)
      @right_window.refresh
      return
    end
    # Si pulsas Izquierda
    if Input.repeat?(Input::LEFT)
      item = $data_armors[current_id + 1]
      $game_system.se_play($data_system.cursor_se)
      n = 1
      n *= 10  if Input.press?(Input::CTRL)
      $game_party.lose_armor(item.id, n)
      @right_window.refresh
      return
    end
    # Si pulsas Y
    if Input.trigger?(Input::Y)
      item = $data_armors[@right_window.index + 1]
      $game_system.se_play($data_system.cursor_se)
      $game_party.gain_armor(item.id, 99)
      @right_window.refresh
      return
    end
    # Si pulsas X
    if Input.trigger?(Input::X)
      item = $data_armors[@right_window.index + 1]
      $game_system.se_play($data_system.cursor_se)
      $game_party.lose_armor(item.id, 99)
      @right_window.refresh
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Actores
  #--------------------------------------------------------------------------
  def update_actors
    current_id = @right_window.index
    actor_id = @right_window.actor_id
    # Si pulsas R
    if Input.trigger?(Input::R)
      $game_system.se_play($data_system.cursor_se)
      actor_id = @right_window.actor_id - 1
      actor_id = (actor_id + 1) % ($data_actors.size - 1)
      @right_window.actor_id = actor_id + 1
      @right_window.refresh
      return
    end
    # Si pulsas L
    if Input.trigger?(Input::L)
      $game_system.se_play($data_system.cursor_se)
      actor_id = @right_window.actor_id - 1
      actor_id = (actor_id - 1) % ($data_actors.size - 1)
      @right_window.actor_id = actor_id + 1
      @right_window.refresh
      return
    end
    case current_id
    when 0 # En grupo
      # Si pulsas C
      if Input.trigger?(Input::C)
        actor = $game_actors[actor_id]
        $game_system.se_play($data_system.decision_se)
        if $game_party.actors.include?(actor)
          $game_party.remove_actor(actor_id)
        else
          $game_party.add_actor(actor_id)
        end
        $game_party.actors.sort!{|b, a| b.id - a.id}
        $game_player.refresh
        @right_window.refresh
        return
      end
    when 1 # Nivel
      # Si pulsas Derecha
      if Input.repeat?(Input::RIGHT)
        actor = $game_actors[actor_id]
        $game_system.se_play($data_system.cursor_se)
        n = 1
        n *= 10  if Input.press?(Input::CTRL)
        actor.level += n
        actor.hp = actor.maxhp
        actor.sp = actor.maxsp
        @right_window.refresh
        return
      end
      # Si pulsas Izquierda
      if Input.repeat?(Input::LEFT)
        actor = $game_actors[actor_id]
        $game_system.se_play($data_system.cursor_se)
        n = 1
        n *= 10  if Input.press?(Input::CTRL)
        actor.level -= n
        actor.hp = actor.maxhp
        actor.sp = actor.maxsp
        @right_window.refresh
        return
      end
    when 2 # Arma
      # Si pulsas Derecha
      if Input.repeat?(Input::RIGHT)
        $game_system.se_play($data_system.cursor_se)
        actor = $game_actors[actor_id]
        weapon_set = $data_classes[actor.class_id].weapon_set
        weapon_id = actor.weapon_id
        if weapon_id == 0
          weapon_id = weapon_set[0]
        else
          weapon_index = weapon_set.index(weapon_id)
          weapon_id = weapon_set[weapon_index + 1]
        end
        if weapon_id == nil
          weapon_id = 0
        end
        actor.safe_equip(0, weapon_id)
        @right_window.refresh
        return
      end
      # Si pulsas Izquierda
      if Input.repeat?(Input::LEFT)
        $game_system.se_play($data_system.cursor_se)
        actor = $game_actors[actor_id]
        weapon_set = $data_classes[actor.class_id].weapon_set
        weapon_id = actor.weapon_id
        if weapon_id == 0
          weapon_id = weapon_set[weapon_set.size - 1]
        else
          weapon_index = weapon_set.index(weapon_id)
          weapon_id = weapon_set[weapon_index - 1]
          if weapon_set.index(weapon_id) == weapon_set.size - 1
            weapon_id = 0
          end
        end
        if weapon_id == nil
          weapon_id = 0
        end
        actor.safe_equip(0, weapon_id)
        @right_window.refresh
        return
      end
    when 3 # Escudo
      # Si pulsas Derecha
      if Input.repeat?(Input::RIGHT)
        $game_system.se_play($data_system.cursor_se)
        actor = $game_actors[actor_id]
        armor_set = $data_classes[actor.class_id].armor_set
        armor_set = armor_set.select {|armor| $data_armors[armor].kind == 0}
        armor_id = actor.armor1_id
        if armor_id == 0
          armor_id = armor_set[0]
        else
          armor_index = armor_set.index(armor_id)
          armor_id = armor_set[armor_index + 1]
        end
        if armor_id == nil
          armor_id = 0
        end
        actor.safe_equip(1, armor_id)
        @right_window.refresh
        return
      end
      # Si pulsas Izquierda
      if Input.repeat?(Input::LEFT)
        $game_system.se_play($data_system.cursor_se)
        actor = $game_actors[actor_id]
        armor_set = $data_classes[actor.class_id].armor_set
        armor_set = armor_set.select {|armor| $data_armors[armor].kind == 0}
        armor_id = actor.armor1_id
        if armor_id == 0
          armor_id = armor_set[armor_set.size - 1]
        else
          armor_index = armor_set.index(armor_id)
          armor_id = armor_set[armor_index - 1]
          if armor_set.index(armor_id) == armor_set.size - 1
            armor_id = 0
          end
        end
        if armor_id == nil
          armor_id = 0
        end
        actor.safe_equip(1, armor_id)
        @right_window.refresh
        return
      end
    when 4 # Casco
      # Si pulsas Derecha
      if Input.repeat?(Input::RIGHT)
        $game_system.se_play($data_system.cursor_se)
        actor = $game_actors[actor_id]
        armor_set = $data_classes[actor.class_id].armor_set
        armor_set = armor_set.select {|armor| $data_armors[armor].kind == 1}
        armor_id = actor.armor2_id
        if armor_id == 0
          armor_id = armor_set[0]
        else
          armor_index = armor_set.index(armor_id)
          armor_id = armor_set[armor_index + 1]
        end
        if armor_id == nil
          armor_id = 0
        end
        actor.safe_equip(2, armor_id)
        @right_window.refresh
        return
      end
      # Si pulsas Izquierda
      if Input.repeat?(Input::LEFT)
        $game_system.se_play($data_system.cursor_se)
        actor = $game_actors[actor_id]
        armor_set = $data_classes[actor.class_id].armor_set
        armor_set = armor_set.select {|armor| $data_armors[armor].kind == 1}
        armor_id = actor.armor2_id
        if armor_id == 0
          armor_id = armor_set[armor_set.size - 1]
        else
          armor_index = armor_set.index(armor_id)
          armor_id = armor_set[armor_index - 1]
          if armor_set.index(armor_id) == armor_set.size - 1
            armor_id = 0
          end
        end
        if armor_id == nil
          armor_id = 0
        end
        actor.safe_equip(2, armor_id)
        @right_window.refresh
        return
      end
    when 5 # Armadura
      # Si pulsas Derecha
      if Input.repeat?(Input::RIGHT)
        $game_system.se_play($data_system.cursor_se)
        actor = $game_actors[actor_id]
        armor_set = $data_classes[actor.class_id].armor_set
        armor_set = armor_set.select {|armor| $data_armors[armor].kind == 2}
        armor_id = actor.armor3_id
        if armor_id == 0
          armor_id = armor_set[0]
        else
          armor_index = armor_set.index(armor_id)
          armor_id = armor_set[armor_index + 1]
        end
        if armor_id == nil
          armor_id = 0
        end
        actor.safe_equip(3, armor_id)
        @right_window.refresh
        return
      end
      # Si pulsas Izquierda
      if Input.repeat?(Input::LEFT)
        $game_system.se_play($data_system.cursor_se)
        actor = $game_actors[actor_id]
        armor_set = $data_classes[actor.class_id].armor_set
        armor_set = armor_set.select {|armor| $data_armors[armor].kind == 2}
        armor_id = actor.armor3_id
        if armor_id == 0
          armor_id = armor_set[armor_set.size - 1]
        else
          armor_index = armor_set.index(armor_id)
          armor_id = armor_set[armor_index - 1]
          if armor_set.index(armor_id) == armor_set.size - 1
            armor_id = 0
          end
        end
        if armor_id == nil
          armor_id = 0
        end
        actor.safe_equip(3, armor_id)
        @right_window.refresh
        return
      end
    when 6 # Accesorio
      # Si pulsas Derecha
      if Input.repeat?(Input::RIGHT)
        $game_system.se_play($data_system.cursor_se)
        actor = $game_actors[actor_id]
        armor_set = $data_classes[actor.class_id].armor_set
        armor_set = armor_set.select {|armor| $data_armors[armor].kind == 3}
        armor_id = actor.armor4_id
        if armor_id == 0
          armor_id = armor_set[0]
        else
          armor_index = armor_set.index(armor_id)
          armor_id = armor_set[armor_index + 1]
        end
        if armor_id == nil
          armor_id = 0
        end
        actor.safe_equip(4, armor_id)
        @right_window.refresh
        return
      end
      # Si pulsas Izquierda
      if Input.repeat?(Input::LEFT)
        $game_system.se_play($data_system.cursor_se)
        actor = $game_actors[actor_id]
        armor_set = $data_classes[actor.class_id].armor_set
        armor_set = armor_set.select {|armor| $data_armors[armor].kind == 3}
        armor_id = actor.armor4_id
        if armor_id == 0
          armor_id = armor_set[armor_set.size - 1]
        else
          armor_index = armor_set.index(armor_id)
          armor_id = armor_set[armor_index - 1]
          if armor_set.index(armor_id) == armor_set.size - 1
            armor_id = 0
          end
        end
        if armor_id == nil
          armor_id = 0
        end
        actor.safe_equip(4, armor_id)
        @right_window.refresh
        return
      end
    when 7 # Curar Todo
      if Input.trigger?(Input::C)
        $game_system.se_play($data_system.decision_se)
        actor = $game_actors[actor_id]
        actor.recover_all
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Grupo
  #--------------------------------------------------------------------------
  def update_party
    current_id = @right_window.index
    case current_id
    when 0 # Dinero
      # Si pulsas Derecha
      if Input.repeat?(Input::RIGHT)
        item = $data_items[current_id + 1]
        $game_system.se_play($data_system.cursor_se)
        n = 1
        n *= 10  if Input.press?(Input::CTRL)
        $game_party.gain_gold(n)
        @right_window.refresh
        return
      end
      # Si pulsas Izquierda
      if Input.repeat?(Input::LEFT)
        item = $data_items[current_id + 1]
        $game_system.se_play($data_system.cursor_se)
        n = 1
        n *= 10  if Input.press?(Input::CTRL)
        $game_party.lose_gold(n)
        @right_window.refresh
        return
      end
      # Si pulsas Y
      if Input.trigger?(Input::Y)
        item = $data_items[current_id + 1]
        $game_system.se_play($data_system.cursor_se)
        $game_party.gain_gold(9999999)
        @right_window.refresh
        return
      end
      # Si pulsas X
      if Input.trigger?(Input::X)
        item = $data_items[current_id + 1]
        $game_system.se_play($data_system.cursor_se)
        $game_party.lose_gold(9999999)
        @right_window.refresh
        return
      end
    when 1 # Pasos
      # Si pulsas Derecha
      if Input.repeat?(Input::RIGHT)
        item = $data_items[current_id + 1]
        $game_system.se_play($data_system.cursor_se)
        n = 1
        n *= 10  if Input.press?(Input::CTRL)
        $game_party.gain_steps(n)
        @right_window.refresh
        return
      end
      # Si pulsas Izquierda
      if Input.repeat?(Input::LEFT)
        item = $data_items[current_id + 1]
        $game_system.se_play($data_system.cursor_se)
        n = 1
        n *= 10  if Input.press?(Input::CTRL)
        $game_party.lose_steps(n)
        @right_window.refresh
        return
      end
      # Si pulsas Y
      if Input.trigger?(Input::Y)
        item = $data_items[current_id + 1]
        $game_system.se_play($data_system.cursor_se)
        $game_party.gain_steps(9999999)
        @right_window.refresh
        return
      end
      # Si pulsas X
      if Input.trigger?(Input::X)
        item = $data_items[current_id + 1]
        $game_system.se_play($data_system.cursor_se)
        $game_party.lose_steps(9999999)
        @right_window.refresh
        return
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Batalla
  #--------------------------------------------------------------------------
  def update_battle
    current_id = @right_window.index
    # Si pulsas C
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      $game_temp.battle_test = true
      $game_temp.battle_abort = true
      $game_temp.battle_calling = true
      $game_temp.battle_troop_id = current_id + 1
      $game_temp.battle_can_escape = true
      $game_temp.battle_can_lose = true
      clear_scenes
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Mapa
  #--------------------------------------------------------------------------
  def update_map
    current_id = @right_window.index
    # Si pulsas C
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      map_infos = load_data("Data/MapInfos.rxdata")
      data_maps = map_infos.values
      data_maps.sort!{|b,a| b.order - a.order}
      map_id = map_infos.invert[data_maps[current_id]]
      $game_map.setup(map_id)
      $game_temp.player_transferring = true
      $game_temp.player_new_map_id = map_id
      $game_temp.player_new_x = ($game_map.width - 1) / 2
      $game_temp.player_new_y = ($game_map.height - 1) / 2
      $game_temp.player_new_direction = 2
      clear_scenes
    end
  end
  #--------------------------------------------------------------------------
  # * Otros
  #--------------------------------------------------------------------------
  def update_plugins
    # Por defecto no pasa nada
  end
end

Imágenes:





avatar
Wecoc
Administrador
Administrador



Créditos 12297

Gracias : 648

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


Permisos de este foro:
No puedes responder a temas en este foro.