Últimos temas
» ¿Cómo puedo poner personajes descargados de internet en mi RPG MAKER MV?
por PineApple Hoy a las 2:16 am

» Virtual Kingom (Old Version)
por Muzgar Hoy a las 12:00 am

» [VX/ACE] Tileset Moderno del MV
por Muzgar Ayer a las 11:39 pm

» Concurso de relatos - Septiembre/Octubre 2018 [Inscripción]
por Muzgar Ayer a las 11:34 pm

» [Ace]Movimiento Libre
por brrt Lun Oct 15, 2018 3:57 pm

» Laminación [VXACE] [PROYECTO EN CURSO]
por Pocari Vie Oct 12, 2018 12:08 pm

» QUITAR VENTANA DEL MENU (VX ACE)
por THESHINYMISTERXD Sáb Oct 06, 2018 7:46 pm

» Condición para saber si el jugador está caminando
por Sonik Sáb Oct 06, 2018 5:03 pm

» ¿Tileset de un futbolín?
por MCarlos15 Jue Oct 04, 2018 9:07 pm

» RPG Maker VX Ace en MAC
por Er1ck_92 Mar Oct 02, 2018 8:42 am

» Distrito 0 [VXACE]
por BREAK93 Mar Oct 02, 2018 6:08 am

» Necesito taileset modernos pero que no tengan estilo anime por favor
por Doble D Mar Oct 02, 2018 12:36 am


KyoPrizePacks XP

Ir abajo

KyoPrizePacks XP

Mensaje por kyonides el Vie Jul 14, 2017 1:00 am

KyoPrizePacks XP
v 1.0.2


por Kyonides-Arkanthos


Este script nace debido a la necedad de un usuario llamado Nyakuya. No bromeo, realmente así fue como surgió la idea de desarrollar este peculiar y no si innecesario script. Lo que tiene de bueno es que no hay que matarse configurando muchos eventos comunes complicados. Cada evento común solo lleva un comando, el llamado a script.

La razón de ser de este script es que Nyakuya deseaba que un objeto equis pudiera ser abierto y en su lugar apareciera inmediatamente otro objeto que haría las de premio para el jugador. El premio sería solo uno de varias posibilidades.

Si tienen más preguntas sobre por qué deberían utilizar este script, pregúntenle a Nyakuya en persona, dónde sea que esté ahora.


Código:
# * KyoPrizePacks XP
#   Scripter : Kyonides-Arkanthos
#   v 1.0.2 - 2015-07-09

#   Este Script les permite crear objetos que funcionen como Paquetes Sorpresa.
#   En vez de obtener algo simple como 1 Poción, reciben un Paquete o Regalo o
#   Cofre Especial. Al abrirlo en el Menú de Objetos o Bolsa, el Paquete por
#   fin revela su contenido, el cual es aleatorio.

#   Llamado a Script para ser utilizado desde un evento común

#     RandomPrize.set_prize(Número)

#     Con este llamado pueden elegir el Paquete de Premios del cual saldrá el
#     Premio definitivo que recibirá el jugador.

#   Como desarrolladores Uds. pueden definir qué premios otorgarán por cada
#   Paquete que el jugador reciba, pero solo obtendrá una de todas aquellas
#   posibilidades que Uds. hubieran configurado en el archivo de TXT. Revisen
#   la Constante PRIZE_FILENAME para saber cuál es el nombre del archivo.

#   Cada renglón en el TXT es un paquete de premios.

#   Obj indica que el premio es un Objeto de la Base de Datos.
#   Arm indica que el premio es una Arma de la Base de Datos.
#   Ard indica que el premio es una Armadura de la Base de Datos.
#   Hab indica que el premio es una Habilidad de la Base de Datos.

#   El Objeto que otorga estos premios no lo obligará salir del menú como es
#   usual en el RPG Maker.

#   Cada indicador irá seguido de 2 números, ID y Cantidad.

module RandomPrize
  # Archivo con la Configuración de los Premios
  PRIZE_FILENAME = 'regalos.txt'
  # Etiqueta de Objeto como Premio en el Archivo
  ITEM_PRIZE   = 'Obj'
  # Etiqueta de Arma como Premio en el Archivo
  WEAPON_PRIZE = 'Arm'
  # Etiqueta de Armadura como Premio en el Archivo
  ARMOR_PRIZE  = 'Ard'
  # Etiqueta de Habilidad o Skill como Premio en el Archivo
  SKILL_PRIZE  = 'Hab'
  # NO EDITAR LO SIGUIENTE
  # Array que guardará los valores del archivo de Configuración
  @prizes = []
  @skip_map = nil
  PRIZE_RXDATA = 'Data/ChestPrizes.rxdata'
  def self.skip_map=(bool) @skip_map = bool end
  def self.skip_map() @skip_map end
  def self.get_prize_data
    if $DEBUG and File.exist?(PRIZE_FILENAME)
      regex = /[a-zA-Z]+/
      lines = File.readlines(PRIZE_FILENAME)
      lines.size.times {|n| @prizes[n] = []
        packs = lines[n].scan(/#{regex}|\d+/)
        packs = packs.map {|ln| self.prize_kind(ln) }.compact
        (packs.size / 3).times {|m| @prizes[n] << packs[m*3,3]}  }
      save_data(@prizes, PRIZE_RXDATA)
      return
    end
    @prizes = load_data(PRIZE_RXDATA)
  end

  def self.prize_kind(kind)
    regexp = /\d+/
    prize = case kind
    when ITEM_PRIZE : :item
    when WEAPON_PRIZE : :weapon
    when ARMOR_PRIZE : :armor
    when SKILL_PRIZE : :skill
    when regexp : kind.to_i
    end
    return prize
  end

  def self.set_prize(index)
    @skip_map = true
    size = @prizes[index].size
    prize = @prizes[index][rand(size)]
    case prize[0]
    when :item : $game_party.gain_item(prize[1], prize[2])
    when :weapon : $game_party.gain_weapon(prize[1], prize[2])
    when :armor : $game_party.gain_armor(prize[1], prize[2])
    when :skill : $game_party.gain_skill(prize[1], prize[2])
    end
  end
  self.get_prize_data
end

class Scene_Item
  def update_item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new(0)
      return
    elsif Input.trigger?(Input::C)
      @item = @item_window.item
      # If not a use item
      unless @item.is_a?(RPG::Item)
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # If it can't be used
      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 effect scope is an ally
      if @item.scope >= 3
        # Activate target window
        @item_window.active = false
        @target_window.x = (@item_window.index + 1) % 2 * 304
        @target_window.visible = true
        @target_window.active = true
        # Set cursor position to effect scope (single / all)
        if @item.scope == 4 || @item.scope == 6
          @target_window.index = -1
        else
          @target_window.index = 0
        end
      # If effect scope is other than an ally
      else
        # If command event ID is valid
        if @item.common_event_id > 0
          # Command event call reservation
          $game_temp.common_event_id = @item.common_event_id
          $game_system.se_play(@item.menu_se)
          # If consumable
          if @item.consumable
            # Decrease used items by 1
            $game_party.lose_item(@item.id, 1)
            $game_system.map_interpreter.update
            @item_window.draw_item(@item_window.index)
          end
          # Do not switch to map screen if Skip Map flag is set to true
          if RandomPrize.skip_map
            @item_window.refresh
            $game_temp.common_event_id = 0
            RandomPrize.skip_map = nil
            return
          end
          $scene = Scene_Map.new
        end
      end
      return
    end
  end

  def update_target
    # If B button was pressed
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      # If unable to use because items ran out
      unless $game_party.item_can_use?(@item.id)
        # Remake item window contents
        @item_window.refresh
      end
      # Erase target window
      @item_window.active = true
      @target_window.visible = false
      @target_window.active = false
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # If items are used up
      if $game_party.item_number(@item.id) == 0
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # If target is all
      if @target_window.index == -1
        # Apply item effects to entire party
        used = false
        for i in $game_party.actors
          used |= i.item_effect(@item)
        end
      end
      # If single target
      if @target_window.index >= 0
        # Apply item use effects to target actor
        target = $game_party.actors[@target_window.index]
        used = target.item_effect(@item)
      end
      # If an item was used
      if used
        $game_system.se_play(@item.menu_se)
        # If consumable
        if @item.consumable
          # Decrease used items by 1
          $game_party.lose_item(@item.id, 1)
          # Redraw item window item
          @item_window.draw_item(@item_window.index)
        end
        # Remake target window contents
        @target_window.refresh
        # If all party members are dead
        if $game_party.all_dead?
          # Switch to game over screen
          $scene = Scene_Gameover.new
          return
        end
        # If common event ID is valid
        if @item.common_event_id > 0
          # Common event call reservation
          $game_temp.common_event_id = @item.common_event_id
          # Do not switch to map screen if Skip Map flag is set to true
          $game_system.map_interpreter.update
          if RandomPrize.skip_map
            $game_temp.common_event_id = 0
            @item_window.refresh
            RandomPrize.skip_map = nil
            return
          end
          $scene = Scene_Map.new
          return
        end
      end
      # If item wasn't used
      $game_system.se_play($data_system.buzzer_se) unless used
      return
    end
  end
end


kyonides
PJ Recurrente
PJ Recurrente

Masculino
Costa Rica
RPG Maker : Xp
Mensajes : 83
Monedas : 218
Reputación : 1

Volver arriba Ir abajo

Volver arriba


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