Buscador avanzado
Navegación
 Portal
 Índice
 Miembros
 Perfil
 FAQ
 Buscar
¿Quién está en línea?
En total hay 3 usuarios en línea: 0 Registrados, 0 Ocultos y 3 Invitados

Ninguno

[ Ver toda la lista ]


La mayor cantidad de usuarios en línea fue 30 el Lun Dic 21, 2015 12:37 am.
Últimos temas
» MundoDeluxe cierra - Muchas Gracias a todos
por ZAnimeMaker Miér Mar 02, 2016 3:45 pm

» Recomendaciones para subir aportes
por Xpe Mar Ene 05, 2016 5:00 pm

» dUDA Sobre mi Rpg maker XP en ES
por SketchDeluxe Sáb Ene 02, 2016 7:26 pm

» Arruina el anterior y pide un deseo
por asdseba123 Mar Dic 29, 2015 11:07 pm

» ¿Qué haremos en nuestros días libres?
por bathory123 Sáb Dic 26, 2015 4:02 pm

» Monster Strike (Anime)
por kyonides Sáb Dic 26, 2015 3:33 am

» Galeria de avatares
por bathory123 Vie Dic 25, 2015 6:57 pm

» Feliz Navidad 2015
por kyonides Vie Dic 25, 2015 2:18 am

» Battlers laterales(Ragnarok)
por Maghno Miér Dic 23, 2015 6:57 pm

» Buenas a todos!
por SketchDeluxe Mar Dic 22, 2015 4:36 pm

Publicidad
Afiliados


KyoPrizePacks XP - Reciban Paquetes de Premios Aleatorios

Ver el tema anterior Ver el tema siguiente Ir abajo

KyoPrizePacks XP - Reciban Paquetes de Premios Aleatorios

Mensaje por kyonides el Sáb Oct 24, 2015 12:41 pm

KyoPrizePacks XP
v 1.0.2


por Kyonides-Arkanthos


Este script nace debido a la necedad de un usuario llamado Nyakuya alias Maracuyá. No bromeo, realmente así fue como surgió la idea de desarrollar este peculiar y quizás hasta 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 dicho usuario 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.

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

Ejemplo de Archivo TXT de Configuración

Código:
Arm 1 2u, Obj 1 5u, Ard 1 3u, Hab 1 2u
Arm 2 2u, Obj 2 4u, Hab 2 2u
Arm 5 1u, Obj 3 2u, Ard 4 2u, Hab 3 1u
 
Espero que este script les sea de utilidad.
avatar
kyonides
Usuario VIP
Usuario VIP

Mensajes : 66
Fecha de inscripción : 09/03/2009

Ver perfil de usuario

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

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