Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

Valor de una variable no se actualiza

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP Valor de una variable no se actualiza

Mensaje por AsFzKakarotto el 2018-04-03, 06:25

Hola Mundo maker. Acabo de encontrar un Script viejito que nos permite ver constantemente el dinero obtenido en el mapa.
El script le pertenece a falcao, yo lo he editado para que se vea el valor de una variable ID en vez de el dinero, algo sencillo, va todo perfecto, pero el problema es que el valor no se va actualizando como antes si lo hacia con el dinero, admito que desde la clase Scene_Map puede que haya comandos cambiados que ahora quisas no surgen efecto y se trata de la actualización, pero no comprendo como actualizar una variable cada vez que está cambia. Entro al menú y vuelvo al mapa y así se actualiza

Alguien me da un empujonsito...

Tengo varios sistemas que muestran la variable en el mapa, pero resulta que todos tienen la misma falla. Encontré un sistema
debug que pronto lo compartiré con ustedes y que muestra varias operaciones del sistema en la pantalla y este si va actualizando
la variable, pero el script se me ve algo complejo como para comprenderlo.

Aquí ambos Script:

Falcao, muestra el dinero actual en el mapa (Original):
Código:
#========================================================================#
# Mostrar oro en el mapa (Goldmap)
# Autor: Falcao  
# RPG Maker XP                                                                                
#========================================================================#

module Gold_Map
#------------------------------------------------------------------------
# Interruptor que desactiva la muestra de dinero en el mapa:
Gold_disable = 1
#------------------------------------------------------------------------
# Posición X del dinero en el mapa.
Posision_X = 500
#------------------------------------------------------------------------
# Posición Y del dinero en el mapa.
Posision_Y = 395
#------------------------------------------------------------------------
end

class Window_Gold_map < Window_Base
  def initialize
    super(500, 395, 135, 85)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.opacity = 0
    refresh
  end
  def refresh
    self.contents.clear
    icon = RPG::Cache.icon("032-Item01")    
    src_rect = Rect.new(0, 0, 24, 24)
    self.contents.blt(30 , 30,icon, src_rect)
    cx = contents.text_size($data_system.words.gold).width
    self.contents.font.color = normal_color
    self.contents.draw_text(-20, 30, 120, 32, $game_party.gold.to_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(100-cx, -3, cx, 32, $data_system.words.gold, 2)
  end
  def update
    refresh
  end
end

class Scene_Map
  include Gold_Map
  alias falcao_gold_main main
  def main
    @gold_map =  Window_Gold_map.new
    @gold_map.x = Posision_X
    @gold_map.y = Posision_Y
    if $game_switches[Gold_disable] == false
      @gold_map.visible = true
    else
      @gold_map.visible = false
    end
    falcao_gold_main
    @gold_map.dispose
  end
  alias falcao_gold_update update
  def update
    @gold_map.update
    if $game_switches[Gold_disable] == false
      @gold_map.visible = true
    else
      @gold_map.visible = false
    end
    falcao_gold_update
  end
end
El mio, Muestra el valor de una variable concreta en el mapa:
Código:
#========================================================================#
# Mostrar el valor de una variable en el mapa (Variablemap)
# Autor: Falcao [Editado de Dinero a una Variable por Asfzkakarotto]  
# RPG Maker XP                                                                                
#========================================================================#

module Variable_Map
#------------------------------------------------------------------------
# Id de la Variable que se mostrara su valor en el mapa:
Variable_ID = 1
#------------------------------------------------------------------------
# Interruptor que desactiva la muestra del valor en el mapa:
Variable_disable = 2
#------------------------------------------------------------------------
# Nombre de el Icons usado:
Icons_Name = "038-Item07"
#------------------------------------------------------------------------
# Posición X del dinero en el mapa.
Posision_X = 0
#------------------------------------------------------------------------
# Posición Y del dinero en el mapa.
Posision_Y = 395
#------------------------------------------------------------------------
end

class Window_Variable_map < Window_Base
  def initialize
    super(500, 395, 135, 85)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.opacity = 0
    @var = $game_variables[Variable_Map::Variable_ID]
    refresh
  end
  def refresh
    self.contents.clear
    icon = RPG::Cache.icon(Variable_Map::Icons_Name)
    src_rect = Rect.new(0, 0, 24, 24)
    self.contents.blt(30 , 30,icon, src_rect)
    self.contents.font.color = normal_color
    self.contents.draw_text(-20, 30, 120, 32, @var.to_s, 2)
    self.contents.font.color = system_color
  end
  def update
    refresh
  end
end

class Scene_Map
  include Variable_Map
  alias falcao_variable_main main
  def main
    @variable_map =  Window_Variable_map.new
    @variable_map.x = Posision_X
    @variable_map.y = Posision_Y
    if $game_switches[Variable_disable] == false
      @variable_map.visible = true
    else
      @variable_map.visible = false
    end
    falcao_variable_main
    @variable_map.dispose
  end
  alias falcao_variable_update update
  def update
    @variable_map.update
    if $game_switches[Variable_disable] == false
      @variable_map.visible = true
    else
      @variable_map.visible = false
    end
    falcao_variable_update
  end
end

Es algo sencillo pero he quedado sin salida con esto.
De antemano agradezco sus ayudas.
avatar
AsFzKakarotto
Soñador
Soñador

0/3

Créditos 314

Gracias : 68

Volver arriba Ir abajo

RPG Maker XP Re: Valor de una variable no se actualiza

Mensaje por Wecoc el 2018-07-01, 16:29

Tenías que actualizar el valor @var según la variable, simplemente.

Normalmente creo que es más intuitivo que los interruptores activen cosas cuando están activos, no al revés... Pero bueno, es solo un detalle, y lo he dejado igual por si lo tenías ya implementado de ese modo.

Código:
#========================================================================
# Mostrar el valor de una variable en el mapa (Variablemap)
# Autor: Falcao [Editado de Dinero a una Variable por Asfzkakarotto]  
# RPG Maker XP
#========================================================================

module Variable_Map
  # Id de la Variable que se mostrará su valor en el mapa:
  Variable_ID = 1

  # Interruptor que desactiva la muestra del valor en el mapa:
  Not_Display_Switch = 2

  # Nombre del icono usado:
  Icons_Name = "038-Item07"

  # Posición X del dinero en el mapa.
  Position_X = 0

  # Posición Y del dinero en el mapa.
  Position_Y = 395
end

class Window_Variable_map < Window_Base
  def initialize
    super(500, 395, 160, 128)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.opacity = 0
    @var = $game_variables[Variable_Map::Variable_ID]
    refresh
  end
  def refresh
    self.contents.clear
    icon = RPG::Cache.icon(Variable_Map::Icons_Name)
    src_rect = Rect.new(0, 0, 24, 24)
    self.contents.blt(30, 30, icon, src_rect)
    self.contents.font.color = normal_color
    self.contents.draw_text(-20, 30, 120, 32, @var.to_s, 2)
    self.contents.font.color = system_color
  end
  def update
    if @var != $game_variables[Variable_Map::Variable_ID]
      @var = $game_variables[Variable_Map::Variable_ID]
      refresh
    end
  end
end

class Scene_Map
  include Variable_Map
  alias falcao_variable_main main unless $@
  def main
    @variable_map =  Window_Variable_map.new
    @variable_map.x = Position_X
    @variable_map.y = Position_Y
    if $game_switches[Not_Display_Switch] == false
      @variable_map.visible = true
    else
      @variable_map.visible = false
    end
    falcao_variable_main
    @variable_map.dispose
  end
  alias falcao_variable_update update unless $@
  def update
    @variable_map.update
    if $game_switches[Not_Display_Switch] == false
      @variable_map.visible = true
    else
      @variable_map.visible = false
    end
    falcao_variable_update
  end
end
avatar
Wecoc
Administrador
Administrador



Créditos 12283

Gracias : 645

Volver arriba Ir abajo

RPG Maker XP Re: Valor de una variable no se actualiza

Mensaje por EspectroW el 2018-07-01, 17:21

yo también use este mismo escript para adaptarlo a mostrar variables, a parte me sirvió para activar efectos a través de teclas xD es muy flexible.


avatar
EspectroW
Iniciado
Iniciado

0/3

Créditos 17

Gracias : 3

Volver arriba Ir abajo

RPG Maker XP Re: Valor de una variable no se actualiza

Mensaje por Contenido patrocinado


Contenido patrocinado


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.