Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

Ayuda con este script

Ver el tema anterior Ver el tema siguiente Ir abajo

Ayuda con este script

Mensaje por alex1633 el 2017-12-15, 13:47

Hola a todos, necesito ayuda con este script, la duda es como hago para que este script pueda ser activado o desactivado con un interruptor? Estoy intentando añadir esa línea pero no sé como se escribe eso. Sweat

Código:
module Gold_Window
  # Window's horizontal position
  WINDOW_X = 0
  # Window's vertical position
  WINDOW_Y = 420
  # Window's width
  WINDOW_WIDTH = 160
  # Window's height
  WINDOW_HEIGHT = 64
  # Default hide status of the window (true = hidden, false = visible)
  DEFAULT_HIDE = false
  
  @hide = DEFAULT_HIDE
  def self.hidden?
    return @hide
  end
  def self.hide
    @hide = !@hide
  end
end
#==============================================================================
# ** Window_Gold_HUD
#------------------------------------------------------------------------------
#  This window displays amount of gold.
#==============================================================================
class Window_Gold_HUD < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
super(0, 0, 160, 64)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
#--------------------------------------------------------------------------
# * Gold graphic
#--------------------------------------------------------------------------
def draw_gold_pic(actor, x, y)
bitmap = RPG::Cache.picture("gold")
sw = bitmap.width
sh = bitmap.height
src_rect = Rect.new(0, 0, sw, sh)
self.contents.blt(x, y, bitmap, src_rect)
end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    if @old_gold != $game_party.gold || @old_hide != Gold_Window.hidden?
      self.contents.clear
      self.opacity = Gold_Window.hidden? ? 0 : 150
      @text_opacity = Gold_Window.hidden? ? 0 : 255
      cx = contents.text_size($data_system.words.gold).width
      draw_gold_pic(@actor, 112, 10)
      self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
      @old_gold = $game_party.gold
      @old_hide = Gold_Window.hidden?
    end
  end
end
#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  This class performs map screen processing.
#==============================================================================
class Scene_Map
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  alias gold_hud_main main
  def main
    @gold_window = Window_Gold_HUD.new
    gold_hud_main
    @gold_window.dispose    
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias gold_hud_update update
  def update
    @gold_window.refresh
    gold_hud_update
  end
end

Edita Marshmello: Arreglado a Code.
avatar
alex1633
Soñador
Soñador

0/3

Créditos 490

Gracias : 16

Volver arriba Ir abajo

Re: Ayuda con este script

Mensaje por orochii el 2017-12-15, 17:56

Prueba esto. Por cierto, usa etiqueta CODE para código, no SPOILER xd.

Código:
module Gold_Window
  =begin
          CONFIGURACIÓN
  =end
 
  # Window's horizontal position
  WINDOW_X = 0
  # Window's vertical position
  WINDOW_Y = 420
  # Window's width
  WINDOW_WIDTH = 160
  # Window's height
  WINDOW_HEIGHT = 64
  # Interruptor para esconder la ventana
  SHOW_SWITCH_ID = 1
 
  =begin
          FIN DE CONFIGURACIÓN
  =end
 
  def self.hidden?
    return !$game_variables[SHOW_SWITCH_ID]
  end
  def self.hide
    $game_variables[SHOW_SWITCH_ID] = true
  end
  def self.show
    $game_variables[SHOW_SWITCH_ID] = false
  end
end

#==============================================================================
# ** Window_Gold_HUD
#------------------------------------------------------------------------------
# This window displays amount of gold.
#==============================================================================
class Window_Gold_HUD < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 160, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  #--------------------------------------------------------------------------
  # * Gold graphic
  #--------------------------------------------------------------------------
  def draw_gold_pic(actor, x, y)
    bitmap = RPG::Cache.picture("gold")
    sw = bitmap.width
    sh = bitmap.height
    src_rect = Rect.new(0, 0, sw, sh)
    self.contents.blt(x, y, bitmap, src_rect)
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    if @old_gold != $game_party.gold || @old_hide != Gold_Window.hidden?
      self.contents.clear
      self.opacity = Gold_Window.hidden? ? 0 : 150
      @text_opacity = Gold_Window.hidden? ? 0 : 255
      cx = contents.text_size($data_system.words.gold).width
      draw_gold_pic(@actor, 112, 10)
      self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
      @old_gold = $game_party.gold
      @old_hide = Gold_Window.hidden?
    end
  end
end
#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
# This class performs map screen processing.
#==============================================================================
class Scene_Map
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  alias gold_hud_main main
  def main
    @gold_window = Window_Gold_HUD.new
    gold_hud_main
    @gold_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias gold_hud_update update
  def update
    @gold_window.refresh
    gold_hud_update
  end
end

En teoría sirve.
avatar
orochii
Reportero

0/3

Créditos 7792

Gracias : 461

Volver arriba Ir abajo

Re: Ayuda con este script

Mensaje por alex1633 el 2017-12-15, 19:55

Lamento decirte que no me deja
avatar
alex1633
Soñador
Soñador

0/3

Créditos 490

Gracias : 16

Volver arriba Ir abajo

Re: Ayuda con este script

Mensaje por Wecoc el 2017-12-18, 00:11

Eso es porque Orochii hizo cosas raras con =begin y =end.
Te pongo exactamente el mismo script que puso él pero sin eso. A ver si te funciona bien.

Código:
module Gold_Window
  #        CONFIGURACIÓN
  
  # Window's horizontal position
  WINDOW_X = 0
  # Window's vertical position
  WINDOW_Y = 420
  # Window's width
  WINDOW_WIDTH = 160
  # Window's height
  WINDOW_HEIGHT = 64
  # Interruptor para esconder la ventana
  SHOW_SWITCH_ID = 1
  
  #        FIN DE CONFIGURACIÓN
  
  def self.hidden?
    return !$game_variables[SHOW_SWITCH_ID]
  end
  def self.hide
    $game_variables[SHOW_SWITCH_ID] = true
  end
  def self.show
    $game_variables[SHOW_SWITCH_ID] = false
  end
end

#==============================================================================
# ** Window_Gold_HUD
#------------------------------------------------------------------------------
# This window displays amount of gold.
#==============================================================================
class Window_Gold_HUD < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 160, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  #--------------------------------------------------------------------------
  # * Gold graphic
  #--------------------------------------------------------------------------
  def draw_gold_pic(actor, x, y)
    bitmap = RPG::Cache.picture("gold")
    sw = bitmap.width
    sh = bitmap.height
    src_rect = Rect.new(0, 0, sw, sh)
    self.contents.blt(x, y, bitmap, src_rect)
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    if @old_gold != $game_party.gold || @old_hide != Gold_Window.hidden?
      self.contents.clear
      self.opacity = Gold_Window.hidden? ? 0 : 150
      @text_opacity = Gold_Window.hidden? ? 0 : 255
      cx = contents.text_size($data_system.words.gold).width
      draw_gold_pic(@actor, 112, 10)
      self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
      @old_gold = $game_party.gold
      @old_hide = Gold_Window.hidden?
    end
  end
end
#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
# This class performs map screen processing.
#==============================================================================
class Scene_Map
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  alias gold_hud_main main
  def main
    @gold_window = Window_Gold_HUD.new
    gold_hud_main
    @gold_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias gold_hud_update update
  def update
    @gold_window.refresh
    gold_hud_update
  end
end

@orochii =begin y =end solo funcionan sin tabulación y es mejor no aplicarlos tan "porque sí" en el código, ya que eso te impide activar/desactivar fácilmente el script.
avatar
Wecoc
Administrador
Administrador



Créditos 12284

Gracias : 645

Volver arriba Ir abajo

Re: Ayuda con este script

Mensaje por alex1633 el 2017-12-18, 10:26

Nada. Sigue sin funcionar. No da error pero tampoco obedece al interruptor.
avatar
alex1633
Soñador
Soñador

0/3

Créditos 490

Gracias : 16

Volver arriba Ir abajo

Re: Ayuda con este script

Mensaje por Wecoc el 2017-12-18, 15:17

Ah espera, WTF
Ya veo lo que hizo Orochii, lo puso condicionante de una variable en vez de un interruptor.

Código:
module Gold_Window
  #        CONFIGURACIÓN
  
  # Window's horizontal position
  WINDOW_X = 0
  # Window's vertical position
  WINDOW_Y = 420
  # Window's width
  WINDOW_WIDTH = 160
  # Window's height
  WINDOW_HEIGHT = 64
  # Interruptor para esconder la ventana
  SHOW_SWITCH_ID = 1
  
  #        FIN DE CONFIGURACIÓN
  
  def self.hidden?
    return !$game_switches[SHOW_SWITCH_ID]
  end
  def self.hide
    $game_switches[SHOW_SWITCH_ID] = true
  end
  def self.show
    $game_switches[SHOW_SWITCH_ID] = false
  end
end

#==============================================================================
# ** Window_Gold_HUD
#------------------------------------------------------------------------------
# This window displays amount of gold.
#==============================================================================
class Window_Gold_HUD < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 160, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  #--------------------------------------------------------------------------
  # * Gold graphic
  #--------------------------------------------------------------------------
  def draw_gold_pic(actor, x, y)
    bitmap = RPG::Cache.picture("gold")
    sw = bitmap.width
    sh = bitmap.height
    src_rect = Rect.new(0, 0, sw, sh)
    self.contents.blt(x, y, bitmap, src_rect)
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    if @old_gold != $game_party.gold || @old_hide != Gold_Window.hidden?
      self.contents.clear
      self.opacity = Gold_Window.hidden? ? 0 : 150
      @text_opacity = Gold_Window.hidden? ? 0 : 255
      cx = contents.text_size($data_system.words.gold).width
      draw_gold_pic(@actor, 112, 10)
      self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
      @old_gold = $game_party.gold
      @old_hide = Gold_Window.hidden?
    end
  end
end
#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
# This class performs map screen processing.
#==============================================================================
class Scene_Map
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  alias gold_hud_main main
  def main
    @gold_window = Window_Gold_HUD.new
    gold_hud_main
    @gold_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias gold_hud_update update
  def update
    @gold_window.refresh
    gold_hud_update
  end
end

Prueba ahora.
avatar
Wecoc
Administrador
Administrador



Créditos 12284

Gracias : 645

Volver arriba Ir abajo

Re: Ayuda con este script

Mensaje por alex1633 el 2017-12-18, 17:19

Bueno, hace la mitad de la faena. Llegué a hacer eso antes sin poner interruptores por medio. Simplemente lo que puse fue false y entonces escondía la ventana, lo que se sigue viendo es la cifra y su icono que no puedo quitarlo. Diría que en la parte donde se pone el Gold_Window y sus coordenadas es el cuadro donde se coloca y el tamaño. Después de haber alguna parte donde muestra lo otro.



Quizás esté dentro de esto porque dice refresh y es cuando se va actualizando la cifra del dinero.
Código:
     # * Refresh
      #--------------------------------------------------------------------------
      def refresh
        if @old_gold != $game_party.gold || @old_hide != Gold_Window.hidden?
          self.contents.clear
          self.opacity = Gold_Window.hidden? ? 0 : 150
          @text_opacity = Gold_Window.hidden? ? 0 : 255
          cx = contents.text_size($data_system.words.gold).width
          draw_gold_pic(@actor, 112, 10)
          self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
          @old_gold = $game_party.gold
          @old_hide = Gold_Window.hidden?
        end
      end
    end
avatar
alex1633
Soñador
Soñador

0/3

Créditos 490

Gracias : 16

Volver arriba Ir abajo

Re: Ayuda con este script

Mensaje por Wecoc el 2017-12-18, 18:03

Al final hice el script a mi manera porque había un par de cosas que no me gustaban mucho.
Ya lo testeé y funciona bien.

Código:
#==============================================================================
# ** Gold Window HUD
#==============================================================================

module Gold_Window
  #        CONFIGURACIÓN
  
  # Window's horizontal position
  WINDOW_X = 0
  # Window's vertical position
  WINDOW_Y = 420
  # Window's width
  WINDOW_WIDTH = 160
  # Window's height
  WINDOW_HEIGHT = 64
  # Interruptor para esconder la ventana
  SHOW_SWITCH_ID = 1
  
  #        FIN DE CONFIGURACIÓN
  
  def self.hidden?
    return !$game_switches[SHOW_SWITCH_ID]
  end
  def self.hide
    $game_switches[SHOW_SWITCH_ID] = true
  end
  def self.show
    $game_switches[SHOW_SWITCH_ID] = false
  end
end

#==============================================================================
# ** Window_Gold_HUD
#------------------------------------------------------------------------------
# This window displays amount of gold.
#==============================================================================

class Window_Gold_HUD < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 160, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.back_opacity = 160
    self.visible = !Gold_Window.hidden?
    refresh
  end
  #--------------------------------------------------------------------------
  # * Gold graphic
  #--------------------------------------------------------------------------
  def draw_gold_pic(actor, x, y)
    bitmap = RPG::Cache.picture("gold") rescue nil
    return if bitmap.nil?
    sw = bitmap.width
    sh = bitmap.height
    src_rect = Rect.new(0, 0, sw, sh)
    self.contents.blt(x, y, bitmap, src_rect)
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    if @gold_data != $game_party.gold
      @gold_data = $game_party.gold
      self.contents.clear
      cx = contents.text_size($data_system.words.gold).width
      draw_gold_pic(@actor, 112, 10)
      self.contents.draw_text(4, 0, 120 - cx - 2, 32, $game_party.gold.to_s, 2)
    end
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    super
    self.visible = !Gold_Window.hidden?
    refresh
  end
end

#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
# This class performs map screen processing.
#==============================================================================

class Scene_Map
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  alias gold_hud_main main
  def main
    @gold_window = Window_Gold_HUD.new
    gold_hud_main
    @gold_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias gold_hud_update update
  def update
    @gold_window.update
    gold_hud_update
  end
end

La configuración va como antes.
Si quieres que el fondo de la ventana no se muestre nunca, es decir se muestre solo el texto y el icono busca esta línea:

[line]self.back_opacity = 160[/line]

y la cambias por

[line]self.opacity = 0[/line]
avatar
Wecoc
Administrador
Administrador



Créditos 12284

Gracias : 645

Volver arriba Ir abajo

Re: Ayuda con este script

Mensaje por alex1633 el 2017-12-18, 18:26

Muchísimas gracias Wecoc!! Very Happy

Había creado un tema en el mercado respecto a este script, pues no había manera de conseguir esto. Daba unos 400 créditos. Si quieres, sírvetelos. gcool
avatar
alex1633
Soñador
Soñador

0/3

Créditos 490

Gracias : 16

Volver arriba Ir abajo

Re: Ayuda con este script

Mensaje por kyonides-arkanthos el 2017-12-18, 23:45

Le he agregado la opción de préstamos (¿a lo mafioso?)

Obviamente la parte de sumarle o restarle el dinero disponible al equipo de héroes se hace de forma tradicional.


Código:
#==============================================================================
# ** Gold Window HUD
#==============================================================================

# Instructions for Loans / Instrucciones para los préstamos

#   Get More Money / Para incrementar el monto de los préstamos
#   $game_party.increase_loan(N)

#   Make a Payment / Para decrementar el monto de los préstamos
#   $game_party.pay_loan(N)

#   N is equal to any integer. / N es igual a cualquier número entero.

#   Also remember you can togle the GOLD_LOANS_SWITCH_ID at any time.
#   Además recuerda que puedes (des)activar el interruptor de Préstamos cuando
#   quieras para ver los Préstamos (activado) o el Oro (desactivado).

module Gold_Window
  #  CONFIGURATION      CONFIGURACIÓN
 
  # Window horizontal position
  X = 0
  # Window vertical position
  Y = 420
  # Window width / Ancho
  WIDTH = 160
  # Window height / Altura
  HEIGHT = 64
  # Window opacity / Opacidad general de la ventana
  OPACITY = 255
  # Window back opacity / Opacidad del fondo de la ventana
  BACK_OPACITY = 160
  # Hide Window Switch / Interruptor para esconder la ventana
  SHOW_SWITCH_ID = 1
  # Gold and Loans Switch ID
  # Interruptor para cambiar de Oro a Préstamos y viceversa
  GOLD_LOANS_SWITCH_ID = 2
  # Maximum Amount for Loans / Monto máximo para préstamos
  LOANS_MAX = 99999999
  # Etiqueta de Préstamos
  LOANS_LABEL = 'P'
  # List of Icon Filenames / Lista de Archivos de Íconos
  ICONS = ['gold', '']
  #   END OF CONFIGURATION     FIN DE CONFIGURACIÓN
end

#==============================================================================
# ** Window_Gold_HUD
#------------------------------------------------------------------------------
# This window displays amount of gold.
#==============================================================================

class Window_Gold_HUD < Window_Base
  include Gold_Window
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(X, Y, 160, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.opacity = OPACITY
    self.back_opacity = BACK_OPACITY
    self.visible = !hidden?
    @mode = !$game_switches[GOLD_LOANS_SWITCH_ID] ? 0 : 1
    refresh
  end
  #--------------------------------------------------------------------------
  # * Gold graphic
  #--------------------------------------------------------------------------
  def draw_gold_pic(actor, x, y)
    bitmap = RPG::Cache.picture(ICONS[@mode]) rescue nil
    return if bitmap.nil?
    sw = bitmap.width
    sh = bitmap.height
    src_rect = Rect.new(0, 0, sw, sh)
    self.contents.blt(x, y, bitmap, src_rect)
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    @mode = !$game_switches[GOLD_LOANS_SWITCH_ID] ? 0 : 1
    if @mode == 0 and @gold != $game_party.gold
      @gold = $game_party.gold
      self.contents.clear
      draw_gold_pic(@actor, 112, 10)
      cx = contents.text_size($data_system.words.gold).width
      self.contents.draw_text(4, 0, 120 - cx - 2, 32, $game_party.loans.to_s, 2)
    elsif @mode == 1 and @loans != $game_party.loans
      @loans = $game_party.loans
      self.contents.clear
      draw_gold_pic(@actor, 112, 10)
      cx = contents.text_size(LOANS_LABEL).width
    end
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    super
    self.visible = !hidden?
    refresh if self.visible
  end
  def hidden?() !$game_switches[SHOW_SWITCH_ID] end
  def hide() $game_switches[SHOW_SWITCH_ID] = true end
  def show() $game_switches[SHOW_SWITCH_ID] = false end
  def switch_info() $game_switches[LOANS_VAR_ID] = end
end

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

class Game_Party
  attr_reader :loans
  alias gold_window_gm_party_init initialize
  def initialize
    @loans = 0
    gold_window_gm_party_init
  end
  def pay_loan(n) @loans = [@loans - n, 0].max end
  def increase_loan(n) @loans = [@loans + n, Gold_Window::LOANS_MAX].min end
end

#==============================================================================
# ** Scene_Map
#==============================================================================

class Scene_Map
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  alias gold_hud_main main
  def main
    @gold_window = Window_Gold_HUD.new
    gold_hud_main
    @gold_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias gold_hud_update update
  def update
    @gold_window.update
    gold_hud_update
  end
end
avatar
kyonides-arkanthos
Principiante
Principiante

0/3

Créditos 572

Gracias : 85

Volver arriba Ir abajo

Re: Ayuda con este script

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.