Últimos temas
» Ayuda para caminar y desbloquear camino
por joseromero96 Ayer a las 9:50 pm

» Pokemon Destiny
por JapoZero Ayer a las 3:13 am

» Necesito ayuda
por DorFenn Jue Ago 06, 2020 5:08 am

» Consejos para monetizar un juego
por joseromero96 Miér Ago 05, 2020 7:59 pm

» KEndure XP + VX
por kyonides Sáb Ago 01, 2020 2:11 am

» KRiskPoints XP
por kyonides Sáb Ago 01, 2020 1:45 am

» The Legend of Zelda: Trident of Power (RM2K3) [Juego Completo]
por Pizus Miér Jul 29, 2020 10:27 pm

» Chara - Cebolla Caminante
por CryOnion Miér Jul 29, 2020 10:23 pm

» Error despliegue del proyecto para Web
por sipsop Miér Jul 29, 2020 2:14 pm

» [RMVX]Kami no dokusai [Juego del Foro]
por luistop12 Sáb Jul 25, 2020 9:24 am

» KMapSign RG
por kyonides Sáb Jul 25, 2020 6:38 am

» Enemybook Plugin (completar besitario por zona + premio) MV - ayuda -
por Mericantos Sáb Jul 25, 2020 4:54 am


KMapData para Varios Makers

Ir abajo

KMapData para Varios Makers Empty KMapData para Varios Makers

Mensaje por kyonides el Jue Jul 02, 2020 5:52 am

KMapData
versión 0.3.4

por Kyonides Arkanthes


Introducción

Es muy simple, te ofrece tres cosas. Puedes darle seguimiento a cofres hallados, a trampas activadas y al orden en que activas los interruptores como parte de una misión o prueba de algún anciano maestro o un locazo como Orochii. XD

Corre en cualquier Maker que utilice Ruby.


El Script Principal de KMapData

Código:
# * KMapData
#  Scripter : Kyonides Arkanthes
#  2020-07-04 - v0.3.4

# Este script les permite dar seguimiento a cofres que hayas encontrado en el
# mapa y a todas las trampas que hayas activado hasta entonces.

# Supongo que lo segundo es útil para diseñar un sistema en el que registres
# los cofres y las trampas sin gastar variables del juego. Puedes limpiar los
# datos del mapa en cualquier momento de ser necesario.

# Es posible rastrear los interruptores que el jugador active o desactive.

# Aún debes configurar los valores iniciales de unas cuantas constantes listadas
# en el módulo KMap!

# * Llamados a Script *

# Para obtener el ID de Mapa Actual
#  @map_id

# Para incrementar el Número Total de Cofres Hallados en algún mapa
#  $game_party.chests_found[IDMapa] += 1

# Para incrementar el Número Total de Trampas Activadas en algún mapa
#  $game_party.traps_triggered[IDMapa] += 1

# Para limpiar datos de algún mapa - Opciones: Ver constante CLEAR_DATA_OPTIONS
#  $game_party.clear_data(Opcion)        - Mapa Actual
#  $game_party.clear_data(Opcion, IDMapa) - Cualquier Mapa

# Para verificar si el jugador ha hallado suficientes cofres y no ha activado
# demasiadas trampas en un mapa específico
#  KMap.pass_chest_trap_test?        - Mapa Actual
#  KMap.pass_chest_trap_test?(IDMapa) - Cualquier Mapa

# Para verificar si el jugador ha activado interruptores en el orden correcto
#  KMap.pass_switch_order?        - Mapa Actual
#  KMap.pass_switch_order?(IDMapa) - Cualquier Mapa

# Para configurar el Orden de Interruptores de algún Mapa
# -> Orden Predefinido
#  KMap.map_switch_order[IDMapa] = [1, 3, 5, etc.]
# -> Acciones del Jugador
#  Asigna un valor a Variable de Juego definida en constante SWITCH_ORDER_VAR
#  para cada interruptor al hacer clic en Control de Variables.
#  Da igual si el jugador los enciende o apaga en algún momento.

# Para limpiar todo lo relacionado con el Orden de Interruptores
#  KMap.clear_switch_order

# * Ejemplos de Condiciones de Script
#  Allí @map_id sería lo mismo que el Mapa Actual.
#  Script [ $game_party.chests_found[@map_id] >= 20  ]
#  Script [ $game_party.traps_triggered[@map_id] < 6 ]
#  Script [ KMap.pass_switch_order?                  ]

module KMap
  CHESTS_SWITCH = 1
  TRAPS_SWITCH = 2
  SWITCH_ORDER_VAR = 1
  MAP_SWITCH_ORDER = "Orden Óptimo"
  ALT_SWITCH_ORDER = "Orden Alternativo"
  SWITCH_ORDER = "Orden del Jugador"
  # Orden de Opciones como :símbolos : [ Cofre, Trampa, todos ]
  CLEAR_DATA_OPTIONS = [:cofre, :trampa, :todos]
  MIN_CHESTS_FOUND = {}
  MIN_CHESTS_FOUND.default = 0 # Para aquellos mapas no incluidos
  MAX_TRAPS_FOUND = {}
  MAX_TRAPS_FOUND.default = 0
  # Ejemplos de Cofres para Mapa #1:  MIN_CHESTS_FOUND[1] = 20
  # Ejemplos de Trampas para Mapa #1: MIN_TRAPS_FOUND[1] = 5
  class << self
    def pass_chest_trap_test?(mid=$game_map.map_id)
      return false if $game_party.chests_found[mid] < MIN_CHESTS_FOUND[mid]
      $game_party.traps_triggered[mid] <= MIN_TRAPS_FOUND[mid]
    end

    def pass_switch_order?(mid=$game_map.map_id)
      @map_switch_order == @switch_order
    end

    def select_order(n)
      (n == 0 ? @map_switch_order : n == 1 ? @alt_switch_order : @switch_order)
    end

    def select_label(n)
      (n == 0 ? MAP_SWITCH_ORDER : n == 1 ? ALT_SWITCH_ORDER : SWITCH_ORDER)
    end

    def clear_switch_order
      @map_switch_order = []
      @alt_switch_order = []
      @switch_order = []
    end

    def retrieve_version
      lines = File.readlines('Game.ini')
      lines.each do |line|
        value = line =~ /rgss\d/i
        next if value == nil
        return line.scan(/\d/)[0].to_i
      end
    end
    attr_accessor :map_switch_order, :alt_switch_order
    attr_reader :switch_order
  end
  MAKER_VERSION = retrieve_version
  clear_switch_order
  Manager = MAKER_VERSION == 1 ? Interpreter : Game_Interpreter
end

class Game_Party
  alias :kyon_md_gm_party_init initialize
  def initialize
    kyon_md_gm_party_init
    @chests_found = {}
    @chests_found.default = 0
    @traps_triggered = {}
    @traps_triggered.default = 0
  end

  def clear_data(data_sym, map_id=$game_map.map_id)
    chest, traps, all = KMap::CLEAR_DATA_OPTIONS
    @chests_found[map_id] = 0 if [all, chest].include?(data_sym)
    @traps_triggered[map_id] = 0 if [all, traps].include?(data_sym)
  end
  attr_reader :chests_found, :traps_triggered
end

class KMap::Manager
  alias :kyon_md_int_switches :command_121
  alias :kyon_md_int_variables :command_122
  def command_121
    kyon_int_switches
    cs = KMap::CHESTS_SWITCH
    ts = KMap::TRAPS_SWITCH
    if $game_switches[cs]
      $game_switches[cs] = false
      $game_party.chests_found[@map_id] += 1
    end
    if $game_switches[ts]
      $game_switches[ts] = false
      $game_party.traps_triggered[@map_id] += 1
    end
    return true
  end

  def command_122
    sov = KMap::SWITCH_ORDER_VAR
    if sov == @parameters[4] and $game_variables[sov] > 0
      KMap.switch_order << $game_variables[sov]
      $game_variables[sov] = 0
      return true
    end
    kyon_md_int_variables
  end
end

class SwitchOrderWindow < Window_Selectable
  def initialize(wy, pos)
    @switches = KMap.select_order(pos)
    @label = KMap.select_label(pos)
    @lh = KMap::MAKER_VERSION == 3 ? 24 : 32
    if KMap::MAKER_VERSION == 1
      @lj, w, h = [28, 640, 96]
    else
      @lj, w, h = [24, 544, 88]
    end
    super(0, wy, w, h)
    create_contents
    refresh
  end

  def refresh
    bitmap = self.contents
    bitmap.draw_text(0, 0, width - @lh, @lj, @label, 1)
    lw = 0
    @switches.size.times do |n|
      label = @switches[n].to_s
      lx = contents.text_size(label).width
      bitmap.draw_text(lw, @lh, lx, @lj, label)
      lw += lx + 8
    end
  end
end

Menu para Despulgarlo en XP

Código:
# * KMapData - Switch Order Debug Menu XP
#  Scripter : Kyonides Arkanthes

class SwitchOrderWindow
  def create_contents
    self.contents = Bitmap.new(width - 32, height - 32)
  end
end

class SwitchOrderScene
  def main
    @order_windows = [SwitchOrderWindow.new(0, 0)]
    @order_windows << SwitchOrderWindow.new(96, 1)
    @order_windows << SwitchOrderWindow.new(192, 2)
    Graphics.transition
    until $scene != self
      Graphics.update
      Input.update
      update
    end
    Graphics.freeze
    @order_windows.each{|win| win.dispose }
  end

  def update
    return unless Input.trigger?(Input::B)
    $game_system.se_play($data_system.cancel_se)
    $scene = Scene_Map.new
  end
end

class Scene_Map
  alias :kyon_md_scn_map_up :update
  def update
    kyon_md_scn_map_up
    if Input.trigger?(Input::CTRL) and !$game_player.moving?
      $game_system.se_play($data_system.decision_se)
      $scene = SwitchOrderScene.new
    end
  end
end

Menu para Despulgarlo en VX o ACE

Código:
# * KMapData - Switch Order Debug Menu VX & ACE
#  Scripter : Kyonides Arkanthes

class SwitchOrderScene < Scene_Base
  def main
    @keep_open = true
    @order_windows = [SwitchOrderWindow.new(0, 0)]
    @order_windows << SwitchOrderWindow.new(88, 1)
    @order_windows << SwitchOrderWindow.new(176, 2)
    perform_transition
    while @keep_open
      Graphics.update
      Input.update
      update
    end
    Graphics.freeze
    @order_windows.each{|win| win.dispose }
  end

  def update
    return unless Input.trigger?(Input::B)
    Sound.play_cancel
    @keep_open = nil
    if KMap::MAKER_VERSION == 2
      $scene = Scene_Map.new
    else
      SceneManager.goto(Scene_Map)
    end
  end
end

class Scene_Map
  alias :kyon_md_scn_map_up_call_menu :update_call_menu
  def update_call_menu
    if Input.trigger?(Input::CTRL)
      if KMap::MAKER_VERSION == 2
        Sound.play_decision
        $scene = SwitchOrderScene.new
      else
        Sound.play_ok
        SceneManager.goto(SwitchOrderScene)
      end
      return
    end
    kyon_md_scn_map_up_call_menu
  end
end

Términos y Condiciones de Uso

Ni idea a estas alturas de la vida.


Última edición por kyonides el Dom Jul 05, 2020 9:53 am, editado 1 vez (Razón : Script Modificado)

kyonides
PJ Secundario
PJ Secundario

Masculino
Costa Rica
RPG Maker : Xp
Mensajes : 146
Monedas : 388
Reputación : 7

Volver arriba Ir abajo

KMapData para Varios Makers Empty Re: KMapData para Varios Makers

Mensaje por kyonides el Dom Jul 05, 2020 9:55 am

Actualización

En esta nueva versión de mi script he agregado la opción de orden alternativo de interruptores. Ademaś encontrarán un menú para que lo despulguen si lo consideran necesario hasta que su orden de prueba coincida con alguno de los dos predefinidos.

El orden alternativo es opcional. Si no lo utilizan o tanto el obligatorio como el alternativo no se han definido, el juego no dará error. Supuse que era la mejor manera de avisarles que no lo habían predefinido. :P

kyonides
PJ Secundario
PJ Secundario

Masculino
Costa Rica
RPG Maker : Xp
Mensajes : 146
Monedas : 388
Reputación : 7

Volver arriba Ir abajo

Volver arriba

- Temas similares

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