Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

Ejemplo de ventana modificable

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP Ejemplo de ventana modificable

Mensaje por Wecoc el 2013-09-15, 17:15

Este script que hice hace tiempo no es para que lo uséis sinó que es un ejemplo para scripters. Se trata de una escena con una ventana a la que puedes modificar x, y, width, height y visible de manera que quede guardado cuando guardes la partida (es un script sencillo como podéis ver xD)

Si se usara en un menú por ejemplo, el jugador podría escojer cómo organizar sus ventanas o lo de dentro de ellas; qué mostrar y qué no mostrar y donde, lo cual sería interesante creo yo :3 xDD

Código:
# Ejemplo de ventana modificable

class Game_System
  attr_accessor :test_window_x
  attr_accessor :test_window_y
  attr_accessor :test_window_w
  attr_accessor :test_window_h
  attr_accessor :test_window_visible
  alias test_initialize initialize unless $@
  def initialize
    test_initialize
    @test_window_x = 200
    @test_window_y = 200
    @test_window_w = 100
    @test_window_h = 100
    @test_window_visible = true
  end
end

class Scene_Test
  def main
    test_x = $game_system.test_window_x
    test_y = $game_system.test_window_y
    test_w = $game_system.test_window_w
    test_h = $game_system.test_window_h
    test_visible = $game_system.test_window_visible
    @test_window = Window_Base.new(test_x, test_y, test_w, test_h)
    @test_window.visible = test_visible
    @command_options = Window_Command.new(160, ["Window"])
    @command_options.visible = false
    @edit_options = Window_Command.new(160, ["x / y", "w / h", "visible"])
    @edit_options.y = 64
    @edit_options.visible = false
    @editing = false
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @test_window.dispose
    @command_options.dispose
  end
  def update
    @test_window.update
    if @editing
      update_editing
      return
    end
    if @edit_options.visible
      update_edit
      return
    end
    if @command_options.visible
      update_options
      return
    end
    update_test
  end
  
  def update_test
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @command_options.visible = true
      return
    end
  end
  
  def update_options
    @command_options.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_options.visible = false
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      case @command_options.index
      when 0 # Window
        @edit_options.visible = true
      end
    end
  end
  
  def update_edit
    @edit_options.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @edit_options.visible = false
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      case @edit_options.index
      when 0, 1 # x / y # w / h
        @editing = true
      when 2 # visible
        @test_window.visible = !@test_window.visible
        $game_system.test_window_visible = @test_window.visible
      end
    end
  end
  
  def update_editing
    case @command_options.index
    when 0 # Window
      option = @test_window
    end
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.decision_se)
      @editing = false
      return
    end
    if Input.repeat?(Input::DOWN)
      $game_system.se_play($data_system.cursor_se)
      case @edit_options.index
      when 0 # x / y
        option.y += 10
      when 1 # w / h
        option.height += 10
      end
    end
    if Input.repeat?(Input::UP)
      $game_system.se_play($data_system.cursor_se)
      case @edit_options.index
      when 0 # x / y
        option.y -= 10
      when 1 # w / h
        option.height -= 10
      end
    end
    if Input.repeat?(Input::LEFT)
      $game_system.se_play($data_system.cursor_se)
      case @edit_options.index
      when 0 # x / y
        option.x -= 10
      when 1 # w / h
        option.width -= 10
      end
    end
    if Input.repeat?(Input::RIGHT)
      $game_system.se_play($data_system.cursor_se)
      case @edit_options.index
      when 0 # x / y
        option.x += 10
      when 1 # w / h
        option.width += 10
      end
    end
    $game_system.test_window_x = @test_window.x
    $game_system.test_window_y = @test_window.y
    $game_system.test_window_w = @test_window.width
    $game_system.test_window_h = @test_window.height
  end
end
Si queréis probar éste en concreto se llama con $scene = Scene_Test.new
avatar
Wecoc
Administrador
Administrador



Créditos 12387

Gracias : 595

Volver arriba Ir abajo

RPG Maker XP Re: Ejemplo de ventana modificable

Mensaje por Wecoc el 2013-12-06, 21:30

Actualizo con un script de lo mismo pero adaptado a todo el menú default XP. Para que funcione ponedlo encima de main y llamadlo con lo siguiente: $scene = Scene_Menu_Modifier.new

El script es más largo de lo que podría ser, hay algunas "repeticiones", pero preferí hacerlo así porque es mucho más intuitivo. Es un script que posiblemente cada uno quiera "moldear"; añadir opciones, adaptar a menús distintos, cambiar el editor, poner efectos a la ventanta activada...

Permite modificar in-game la posición de las ventanas, su visibilidad, y en éste caso, la posición de cada cosa de la ventana de estado.

SREENS:
Aquí un ejemplo de la escena correspondiente al editor.


Y aquí un ejemplo de lo que el jugador puede hacer.


Por cierto cuando se guarda la partida ésto también queda guardado como una propiedad más dentro del juego, como en el caso anterior.

Código:
#==============================================================================
# Window Modificable Feature to Defaults
# by Wecoc
# ------------------------------------------------------------
# $scene = Scene_Menu_Modifier.new
#==============================================================================

class Game_System
  attr_accessor :command_window_x
  attr_accessor :command_window_y
  attr_accessor :command_window_w
  attr_accessor :command_window_h
  
  attr_accessor :playtime_window_x
  attr_accessor :playtime_window_y
  attr_accessor :playtime_window_w
  attr_accessor :playtime_window_h
  attr_accessor :playtime_window_v
  
  attr_accessor :steps_window_x
  attr_accessor :steps_window_y
  attr_accessor :steps_window_w
  attr_accessor :steps_window_h
  attr_accessor :steps_window_v
  
  attr_accessor :gold_window_x
  attr_accessor :gold_window_y
  attr_accessor :gold_window_w
  attr_accessor :gold_window_h
  attr_accessor :gold_window_v
  
  attr_accessor :status_window_x
  attr_accessor :status_window_y
  attr_accessor :status_window_w
  attr_accessor :status_window_h
  attr_accessor :status_window_v
    
  attr_accessor :status_name_x
  attr_accessor :status_name_y
  attr_accessor :status_name_v
  attr_accessor :status_class_x
  attr_accessor :status_class_y
  attr_accessor :status_class_v
  attr_accessor :status_level_x
  attr_accessor :status_level_y
  attr_accessor :status_level_v
  attr_accessor :status_exp_x
  attr_accessor :status_exp_y
  attr_accessor :status_exp_w
  attr_accessor :status_exp_v
  attr_accessor :status_state_x
  attr_accessor :status_state_y
  attr_accessor :status_state_v
  attr_accessor :status_hp_x
  attr_accessor :status_hp_y
  attr_accessor :status_hp_v
  attr_accessor :status_sp_x
  attr_accessor :status_sp_y
  attr_accessor :status_sp_v
  attr_accessor :status_chara_x
  attr_accessor :status_chara_y
  attr_accessor :status_chara_d
  attr_accessor :status_chara_v
    
  alias menu_mod_initialize initialize unless $@
  def initialize
    menu_mod_initialize
    @command_window_x = 0
    @command_window_y = 0
    @command_window_w = 160
    @command_window_h = 224
    
    @playtime_window_x = 0
    @playtime_window_y = 224
    @playtime_window_w = 160
    @playtime_window_h = 96
    @playtime_window_v = true
    
    @steps_window_x = 0
    @steps_window_y = 320
    @steps_window_w = 160
    @steps_window_h = 96
    @steps_window_v = true
    
    @gold_window_x = 0
    @gold_window_y = 416
    @gold_window_w = 160
    @gold_window_h = 64
    @gold_window_v = true
    
    @status_window_x = 160
    @status_window_y = 0
    @status_window_w = 480
    @status_window_h = 480
    @status_window_v = true
    
    @status_name_x = 64
    @status_name_y = 0
    @status_name_v = true
    @status_class_x = 208
    @status_class_y = 0
    @status_class_v = true
    @status_level_x = 64
    @status_level_y = 32
    @status_level_v = true
    @status_exp_x = 64
    @status_exp_y = 64
    @status_exp_w = 84
    @status_exp_v = true
    @status_state_x = 152
    @status_state_y = 32
    @status_state_v = true
    @status_hp_x = 300
    @status_hp_y = 32
    @status_hp_v = true
    @status_sp_x = 300
    @status_sp_y = 64
    @status_sp_v = true
    @status_chara_x = 24
    @status_chara_y = 80
    @status_chara_d = 0
    @status_chara_v = true
  end
end

#==============================================================================

class Scene_Menu
  def main
    s1 = $data_system.words.item
    s2 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = "Estado"
    s5 = "Guardar"
    s6 = "Salir"
    @command_window = Window_Command.new($game_system.command_window_w,
    [s1, s2, s3, s4, s5, s6])
    @command_window.index = @menu_index
    
    @command_window.x = $game_system.command_window_x
    @command_window.y = $game_system.command_window_y
    @command_window.width = $game_system.command_window_w
    @command_window.height = $game_system.command_window_h
    
    if $game_party.actors.size == 0
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    if $game_system.save_disabled
      @command_window.disable_item(4)
    end
    
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = $game_system.playtime_window_x
    @playtime_window.y = $game_system.playtime_window_y
    @playtime_window.width = $game_system.playtime_window_w
    @playtime_window.height = $game_system.playtime_window_h
    @playtime_window.visible = $game_system.playtime_window_v
    
    @steps_window = Window_Steps.new
    @steps_window.x = $game_system.steps_window_x
    @steps_window.y = $game_system.steps_window_y
    @steps_window.width = $game_system.steps_window_w
    @steps_window.height = $game_system.steps_window_h
    @steps_window.visible = $game_system.steps_window_v
    
    @gold_window = Window_Gold.new
    @gold_window.x = $game_system.gold_window_x
    @gold_window.y = $game_system.gold_window_y
    @gold_window.width = $game_system.gold_window_w
    @gold_window.height = $game_system.gold_window_h
    @gold_window.visible = $game_system.gold_window_v
    
    @status_window = Window_MenuStatus.new
    @status_window.x = $game_system.status_window_x
    @status_window.y = $game_system.status_window_y
    @status_window.width = $game_system.status_window_w
    @status_window.height = $game_system.status_window_h
    @status_window.visible = $game_system.status_window_v
    
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      break if $scene != self
    end
    Graphics.freeze
    @command_window.dispose
    @playtime_window.dispose
    @steps_window.dispose
    @gold_window.dispose
    @status_window.dispose
  end
end

class Window_PlayTime < Window_Base
  def refresh
    width = $game_system.playtime_window_w - 32
    height = self.contents.height
    self.contents.clear
    self.contents = Bitmap.new(width, height)
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, width-8, 32, "Tiempo")
    @total_sec = Graphics.frame_count / Graphics.frame_rate
    hour = @total_sec / 60 / 60
    min = @total_sec / 60 % 60
    sec = @total_sec % 60
    if width > 80
      text = sprintf("%02d:%02d:%02d", hour, min, sec)
    else
      text = sprintf("%02d:%02d", min, sec)
    end
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 32, width-8, 32, text, 2)
  end
end

class Window_Steps < Window_Base
  def refresh
    width = $game_system.steps_window_w - 32
    height = self.contents.height
    self.contents.clear
    self.contents = Bitmap.new(width, height)
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, width-8, 32, "Pasos")
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 32, width-8, 32, $game_party.steps.to_s, 2)
  end
end

class Window_Gold < Window_Base
  def refresh
    width = $game_system.gold_window_w - 32
    height = self.contents.height
    self.contents.clear
    self.contents = Bitmap.new(width, height)
    cx = contents.text_size($data_system.words.gold).width
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 0, width-8-cx-2,32,$game_party.gold.to_s,2)
    self.contents.font.color = system_color
    self.contents.draw_text(width-4-cx,0,cx,32,$data_system.words.gold,2)
  end
end

class Window_MenuStatus < Window_Selectable
  def refresh
    status_name_x = $game_system.status_name_x
    status_name_y = $game_system.status_name_y
    status_class_x = $game_system.status_class_x
    status_class_y = $game_system.status_class_y
    status_level_x = $game_system.status_level_x
    status_level_y = $game_system.status_level_y
    status_exp_x = $game_system.status_exp_x
    status_exp_y = $game_system.status_exp_y
    status_exp_w = $game_system.status_exp_w
    status_state_x = $game_system.status_state_x
    status_state_y = $game_system.status_state_y
    status_hp_x = $game_system.status_hp_x
    status_hp_y = $game_system.status_hp_y
    status_sp_x = $game_system.status_sp_x
    status_sp_y = $game_system.status_sp_y
    status_chara_x = $game_system.status_chara_x
    status_chara_y = $game_system.status_chara_y
    status_chara_d = $game_system.status_chara_d
    
    width = $game_system.status_window_w - 32
    height = $game_system.status_window_h - 32
    self.contents.clear
    self.contents = Bitmap.new(width, height)
    hero_height = ($game_system.status_window_h - 16) / 4
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      y = i * hero_height
      actor = $game_party.actors[i]
      if $game_system.status_chara_v
        bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
        cw = bitmap.width / 4
        ch = bitmap.height / 4
        src_rect = Rect.new(0, status_chara_d * ch, cw, ch)
        self.contents.blt(status_chara_x - cw / 2,
        status_chara_y + y - ch, bitmap, src_rect)
      end
      if $game_system.status_name_v
        draw_actor_name(actor, status_name_x, status_name_y + y)
      end
      if $game_system.status_class_v
        draw_actor_class(actor, status_class_x, status_class_y + y)
      end
      if $game_system.status_level_v
        draw_actor_level(actor, status_level_x, status_level_y + y)
      end
      if $game_system.status_state_v
        draw_actor_state(actor, status_state_x, status_state_y + y)
      end
      if $game_system.status_exp_v
        self.contents.font.color = system_color
        self.contents.draw_text(status_exp_x, status_exp_y + y, 24, 32, "E")
        self.contents.font.color = normal_color
        self.contents.draw_text(status_exp_x + 24 , status_exp_y + y,
        status_exp_w, 32, actor.exp_s, 2)
        self.contents.draw_text(status_exp_x + status_exp_w + 24,
        status_exp_y + y, 12, 32, "/", 1)
        self.contents.draw_text(status_exp_x + status_exp_w + 36,
        status_exp_y + y, status_exp_w, 32, actor.next_exp_s)
      end
      if $game_system.status_hp_v
        draw_actor_hp(actor, status_hp_x, status_hp_y + y)
      end
      if $game_system.status_sp_v
        draw_actor_sp(actor, status_sp_x, status_sp_y + y)
      end
    end
  end
  
  def update_cursor_rect
    if @index < 0
      self.cursor_rect.empty
    else
      hero_height = ($game_system.status_window_h - 16) / 4
      self.cursor_rect.set(0, @index*hero_height, self.width-32, hero_height-16)
    end
  end
end

#==============================================================================

class Scene_Menu_Modifier
  def main
    
    s1 = $data_system.words.item
    s2 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = "Estado"
    s5 = "Guardar"
    s6 = "Salir"
    @command_window = Window_Command.new($game_system.command_window_w,
    [s1, s2, s3, s4, s5, s6])
    @command_window.index = -1
    
    @command_window.x = $game_system.command_window_x
    @command_window.y = $game_system.command_window_y
    @command_window.width = $game_system.command_window_w
    @command_window.height = $game_system.command_window_h

    @playtime_window = Window_PlayTime.new
    @playtime_window.x = $game_system.playtime_window_x
    @playtime_window.y = $game_system.playtime_window_y
    @playtime_window.width = $game_system.playtime_window_w
    @playtime_window.height = $game_system.playtime_window_h
    @playtime_window.visible = $game_system.playtime_window_v
    
    @steps_window = Window_Steps.new
    @steps_window.x = $game_system.steps_window_x
    @steps_window.y = $game_system.steps_window_y
    @steps_window.width = $game_system.steps_window_w
    @steps_window.height = $game_system.steps_window_h
    @steps_window.visible = $game_system.steps_window_v

    @gold_window = Window_Gold.new
    @gold_window.x = $game_system.gold_window_x
    @gold_window.y = $game_system.gold_window_y
    @gold_window.width = $game_system.gold_window_w
    @gold_window.height = $game_system.gold_window_h
    @gold_window.visible = $game_system.gold_window_v
    
    @status_window = Window_MenuStatus.new
    @status_window.x = $game_system.status_window_x
    @status_window.y = $game_system.status_window_y
    @status_window.width = $game_system.status_window_w
    @status_window.height = $game_system.status_window_h
    @status_window.visible = $game_system.status_window_v
    
    #------------------------------------------------
    
    @window_options = Window_Command.new(240, ["Command window",
    "Playtime window", "Steps window", "Gold window", "Status window"])
    @window_options.x = 120
    @window_options.y = 240
    @window_options.z = 2000
    @window_options.back_opacity = 160
    
    @command_window_options = Window_Command.new(160, ["x / y", "w / h"])
    @command_window_options.x = 120+240
    @command_window_options.y = 240
    @command_window_options.z = 2000
    @command_window_options.visible = false
    @command_window_options.back_opacity = 160
    @command_window_editing = false

    @playtime_window_options = Window_Command.new(160,["x / y","w / h","visible"])
    @playtime_window_options.x = 120+240
    @playtime_window_options.y = 240
    @playtime_window_options.z = 2000
    @playtime_window_options.visible = false
    @playtime_window_options.back_opacity = 160
    @playtime_window_editing = false
    
    @steps_window_options = Window_Command.new(160,["x / y","w / h","visible"])
    @steps_window_options.x = 120+240
    @steps_window_options.y = 240
    @steps_window_options.z = 2000
    @steps_window_options.visible = false
    @steps_window_options.back_opacity = 160
    @steps_window_editing = false
    
    @gold_window_options = Window_Command.new(160,["x / y","w / h","visible"])
    @gold_window_options.x = 120+240
    @gold_window_options.y = 240
    @gold_window_options.z = 2000
    @gold_window_options.visible = false
    @gold_window_options.back_opacity = 160
    @gold_window_editing = false
    
    @status_window_options = Window_Command.new(200,["x / y","w / h","visible",
    "name x / y", "name visible", "class x / y", "class visible", "Lv x / y",
    "Lv visible", "Exp x / y", "Exp w", "Exp visible", "state x / y",
    "state visible", "PV x / y", "PV visible", "PM x / y", "PM visible",
    "Chara x / y", "Chara dir", "Chara visible"])
    @status_window_options.x = 120+240
    @status_window_options.y = 240
    @status_window_options.height = 160
    @status_window_options.z = 2000
    @status_window_options.visible = false
    @status_window_options.back_opacity = 160
    @status_window_editing = false
    
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @window_options.dispose
    
    @command_window.dispose
    @playtime_window.dispose
    @steps_window.dispose
    @gold_window.dispose
    @status_window.dispose
    
    @command_window_options.dispose
    @playtime_window_options.dispose
    @steps_window_options.dispose
    @gold_window_options.dispose
    @status_window_options.dispose
  end
  
  def update
    @command_window.update
    @playtime_window.update
    @steps_window.update
    @gold_window.update
    if @command_window_editing
      update_command_window_editing
      return
    end
    if @command_window_options.visible
      update_command_window_edit
      return
    end
    if @playtime_window_editing
      update_playtime_window_editing
      return
    end
    if @playtime_window_options.visible
      update_playtime_window_edit
      return
    end
    if @steps_window_editing
      update_steps_window_editing
      return
    end
    if @steps_window_options.visible
      update_steps_window_edit
      return
    end
    if @gold_window_editing
      update_gold_window_editing
      return
    end
    if @gold_window_options.visible
      update_gold_window_edit
      return
    end
    if @status_window_editing
      update_status_window_editing
      return
    end
    if @status_window_options.visible
      update_status_window_edit
      return
    end
    update_window_options
  end
    
  def update_window_options
    @window_options.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      case @window_options.index
        when 0 then @command_window_options.visible = true # "Command window"
        when 1 then @playtime_window_options.visible = true # "Playtime window"
        when 2 then @steps_window_options.visible = true # "Steps window"
        when 3 then @gold_window_options.visible = true # "Gold window"
        when 4 then @status_window_options.visible = true # "Status window"
      end
    end
  end
  
  def update_command_window_edit
    @command_window_options.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window_options.visible = false
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @command_window_editing = true
    end
  end
  
  def update_command_window_editing
    option = @command_window # Window Command
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.decision_se)
      @command_window_editing = false
      return
    end
    if Input.repeat?(Input::DOWN)
      $game_system.se_play($data_system.cursor_se)
      case @command_window_options.index
        when 0 then option.y += 16 # x / y
        when 1 then option.height += 16 # w / h
      end
    end
    if Input.repeat?(Input::UP)
      $game_system.se_play($data_system.cursor_se)
      case @command_window_options.index
        when 0 then option.y -= 16 # x / y
        when 1 then option.height -= 16 unless option.height <= 48 # w / h
      end
    end
    if Input.repeat?(Input::LEFT)
      $game_system.se_play($data_system.cursor_se)
      case @command_window_options.index
        when 0 then option.x -= 16 # x / y
        when 1 then option.width -= 16 unless option.width <= 48 # w / h
      end
    end
    if Input.repeat?(Input::RIGHT)
      $game_system.se_play($data_system.cursor_se)
      case @command_window_options.index
        when 0 then option.x += 16 # x / y
        when 1 then option.width += 16 # w / h
      end
    end
    $game_system.command_window_x = @command_window.x
    $game_system.command_window_y = @command_window.y
    $game_system.command_window_w = @command_window.width
    $game_system.command_window_h = @command_window.height
    hh = @command_window.contents.height
    @command_window.contents = Bitmap.new($game_system.command_window_w - 32, hh)
    @command_window.refresh
  end
  
  def update_playtime_window_edit
    @playtime_window_options.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @playtime_window_options.visible = false
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      if @playtime_window_options.index == 2
        @playtime_window.visible = !@playtime_window.visible
        $game_system.playtime_window_v = @playtime_window.visible
      else
        @playtime_window_editing = true
      end
    end
  end
  
  def update_playtime_window_editing
    option = @playtime_window
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.decision_se)
      @playtime_window_editing = false
      return
    end
    if Input.repeat?(Input::DOWN)
      $game_system.se_play($data_system.cursor_se)
      case @playtime_window_options.index
        when 0 then option.y += 16 # x / y
        when 1 then option.height += 16 # w / h
      end
    end
    if Input.repeat?(Input::UP)
      $game_system.se_play($data_system.cursor_se)
      case @playtime_window_options.index
        when 0 then option.y -= 16 # x / y
        when 1 then option.height -= 16 unless option.height <= 48 # w / h
      end
    end
    if Input.repeat?(Input::LEFT)
      $game_system.se_play($data_system.cursor_se)
      case @playtime_window_options.index
        when 0 then option.x -= 16 # x / y
        when 1 then option.width -= 16 unless option.width <= 48 # w / h
      end
    end
    if Input.repeat?(Input::RIGHT)
      $game_system.se_play($data_system.cursor_se)
      case @playtime_window_options.index
        when 0 then option.x += 16 # x / y
        when 1 then option.width += 16 # w / h
      end
    end
    $game_system.playtime_window_x = @playtime_window.x
    $game_system.playtime_window_y = @playtime_window.y
    $game_system.playtime_window_w = @playtime_window.width
    $game_system.playtime_window_h = @playtime_window.height
    @playtime_window.refresh
  end
  
  def update_steps_window_edit
    @steps_window_options.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @steps_window_options.visible = false
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      if @steps_window_options.index == 2
        @steps_window.visible = !@steps_window.visible
        $game_system.steps_window_v = @steps_window.visible
      else
        @steps_window_editing = true
      end
    end
  end
  
  def update_steps_window_editing
    option = @steps_window
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.decision_se)
      @steps_window_editing = false
      return
    end
    if Input.repeat?(Input::DOWN)
      $game_system.se_play($data_system.cursor_se)
      case @steps_window_options.index
        when 0 then option.y += 16 # x / y
        when 1 then option.height += 16 # w / h
      end
    end
    if Input.repeat?(Input::UP)
      $game_system.se_play($data_system.cursor_se)
      case @steps_window_options.index
        when 0 then option.y -= 16 # x / y
        when 1 then option.height -= 16 unless option.height <= 48 # w / h
      end
    end
    if Input.repeat?(Input::LEFT)
      $game_system.se_play($data_system.cursor_se)
      case @steps_window_options.index
        when 0 then option.x -= 16 # x / y
        when 1 then option.width -= 16 unless option.width <= 48 # w / h
      end
    end
    if Input.repeat?(Input::RIGHT)
      $game_system.se_play($data_system.cursor_se)
      case @steps_window_options.index
        when 0 then option.x += 16 # x / y
        when 1 then option.width += 16 # w / h
      end
    end
    $game_system.steps_window_x = @steps_window.x
    $game_system.steps_window_y = @steps_window.y
    $game_system.steps_window_w = @steps_window.width
    $game_system.steps_window_h = @steps_window.height
    @steps_window.refresh
  end
  
  def update_gold_window_edit
    @gold_window_options.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @gold_window_options.visible = false
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      if @gold_window_options.index == 2
        @gold_window.visible = !@gold_window.visible
        $game_system.gold_window_v = @gold_window.visible
      else
        @gold_window_editing = true
      end
    end
  end
  
  def update_gold_window_editing
    option = @gold_window
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.decision_se)
      @gold_window_editing = false
      return
    end
    if Input.repeat?(Input::DOWN)
      $game_system.se_play($data_system.cursor_se)
      case @gold_window_options.index
        when 0 then option.y += 16 # x / y
        when 1 then option.height += 16 # w / h
      end
    end
    if Input.repeat?(Input::UP)
      $game_system.se_play($data_system.cursor_se)
      case @gold_window_options.index
        when 0 then option.y -= 16 # x / y
        when 1 then option.height -= 16 unless option.height <= 48 # w / h
      end
    end
    if Input.repeat?(Input::LEFT)
      $game_system.se_play($data_system.cursor_se)
      case @gold_window_options.index
        when 0 then option.x -= 16 # x / y
        when 1 then option.width -= 16 unless option.width <= 48 # w / h
      end
    end
    if Input.repeat?(Input::RIGHT)
      $game_system.se_play($data_system.cursor_se)
      case @gold_window_options.index
        when 0 then option.x += 16 # x / y
        when 1 then option.width += 16 # w / h
      end
    end
    $game_system.gold_window_x = @gold_window.x
    $game_system.gold_window_y = @gold_window.y
    $game_system.gold_window_w = @gold_window.width
    $game_system.gold_window_h = @gold_window.height
    @gold_window.refresh
  end
  
  def update_status_window_edit
    @status_window_options.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @status_window_options.visible = false
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      case @status_window_options.index
      when 2 # window
        @status_window.visible = !@status_window.visible
        $game_system.status_window_v = @status_window.visible
      when 4 # name
        $game_system.status_name_v = !$game_system.status_name_v
      when 6 # class
        $game_system.status_class_v = !$game_system.status_class_v
      when 8 # lv
        $game_system.status_level_v = !$game_system.status_level_v
      when 11 # exp
        $game_system.status_exp_v = !$game_system.status_exp_v
      when 13 # state
        $game_system.status_state_v = !$game_system.status_state_v
      when 15 # PV
        $game_system.status_hp_v = !$game_system.status_hp_v
      when 17 # PM
        $game_system.status_sp_v = !$game_system.status_sp_v
      when 19 # chara (dir)
        if $game_system.status_chara_d != 3
          $game_system.status_chara_d += 1
        else
          $game_system.status_chara_d = 0
        end
      when 20 # chara
        $game_system.status_chara_v = !$game_system.status_chara_v
      else
        @status_window_editing = true
      end
      @status_window.refresh if @status_window_editing == false
    end
  end
  
  def update_status_window_editing
    option = @status_window
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.decision_se)
      @status_window_editing = false
      return
    end
    if Input.repeat?(Input::DOWN)
      $game_system.se_play($data_system.cursor_se)
      case @status_window_options.index
        when 0 then option.y += 16 # x / y
        when 1 then option.height += 16 # w / h
        when 3 then $game_system.status_name_x += 8 # name x / y
        when 5 then $game_system.status_class_y += 8 # class x / y
        when 7 then $game_system.status_level_y += 8 # level x / y
        when 9 then $game_system.status_exp_y += 8 # exp x / y
        when 12 then $game_system.status_state_y += 8 # state x / y
        when 14 then $game_system.status_hp_y += 8 # hp x / y
        when 16 then $game_system.status_sp_y += 8 # sp x / y
        when 18 then $game_system.status_chara_y += 8 # chara x / y
      end
    end
    if Input.repeat?(Input::UP)
      $game_system.se_play($data_system.cursor_se)
      case @status_window_options.index
        when 0 then option.y -= 16 # x / y
        when 1 then option.height -= 16 unless option.height <= 48 # w / h
        when 3 then $game_system.status_name_y -= 8 # name x / y
        when 5 then $game_system.status_class_y -= 8 # class x / y
        when 7 then $game_system.status_level_y -= 8 # level x / y
        when 9 then $game_system.status_exp_y -= 8 # exp x / y
        when 12 then $game_system.status_state_y -= 8 # state x / y
        when 14 then $game_system.status_hp_y -= 8 # hp x / y
        when 16 then $game_system.status_sp_y -= 8 # sp x / y
        when 18 then $game_system.status_chara_y -= 8 # chara x / y
      end
    end
    if Input.repeat?(Input::LEFT)
      $game_system.se_play($data_system.cursor_se)
      case @status_window_options.index
        when 0 then option.x -= 16 # x / y
        when 1 then option.width -= 16 unless option.width <= 48 # w / h
        when 3 then $game_system.status_name_x -= 8 # name x / y
        when 5 then $game_system.status_class_x -= 8 # class x / y
        when 7 then $game_system.status_level_x -= 8 # level x / y
        when 9 then $game_system.status_exp_x -= 8 # exp x / y
        when 10 then $game_system.status_exp_w -= 8 # exp w
        when 12 then $game_system.status_state_x -= 8 # state x / y
        when 14 then $game_system.status_hp_x -= 8 # hp x / y
        when 16 then $game_system.status_sp_x -= 8 # sp x / y
        when 18 then $game_system.status_chara_x -= 8 # chara x / y
      end
    end
    if Input.repeat?(Input::RIGHT)
      $game_system.se_play($data_system.cursor_se)
      case @status_window_options.index
        when 0 then option.x += 16 # x / y
        when 1 then option.width += 16 # w / h
        when 3 then $game_system.status_name_x += 8 # name x / y
        when 5 then $game_system.status_class_x += 8 # class x / y
        when 7 then $game_system.status_level_x += 8 # level x / y
        when 9 then $game_system.status_exp_x += 8 # exp x / y
        when 10 then $game_system.status_exp_w += 8 # exp w
        when 12 then $game_system.status_state_x += 8 # state x / y
        when 14 then $game_system.status_hp_x += 8 # hp x / y
        when 16 then $game_system.status_sp_x += 8 # sp x / y
        when 18 then $game_system.status_chara_x += 8 # chara x / y
      end
    end
    $game_system.status_window_x = @status_window.x
    $game_system.status_window_y = @status_window.y
    $game_system.status_window_w = @status_window.width
    $game_system.status_window_h = @status_window.height
    @status_window.refresh
  end
end
No hace falta que me déis créditos si lo usáis, tampoco me lo curré demasiado ésta vez xD
avatar
Wecoc
Administrador
Administrador



Créditos 12387

Gracias : 595

Volver arriba Ir abajo

RPG Maker XP Re: Ejemplo de ventana modificable

Mensaje por orochii el 2013-12-07, 03:13

Pues sería genial meterle un soporte para mouse a eso que hiciste Wecoc =DDDD. La opción de visibilidad por ejemplo, que hayan cuadritos abajo para togglearlos (estilo barra de tareas de Windows).

Pero se ve interesante la idea, quiza en otro proyecto haga algo así, uno más orientado a mouse.

Saludos,
Orochii Zouveleki
avatar
orochii
Reportero

0/3

Créditos 7614

Gracias : 415

Volver arriba Ir abajo

RPG Maker XP Re: Ejemplo de ventana modificable

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.