Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

Script de inventario [PEDIDO]

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP Script de inventario [PEDIDO]

Mensaje por Dagharans el 2012-04-05, 12:49

Muy buenas MundoMaker. Me ha surgido este problema durante el proceso de mi proyecto:

De hecho no es un problema, es un inconveniente. Principalmente, habia pensado en no incluir un inventario en el juego, pero después de darle varias vueltas al asunto, decidí que sí. Pero el problema viene aquí: mi menú estaba modificado de una forma en que solo hay tres opciones: Volver al juego, Volver al Título y Salir. Lo que yo querría sería que al pulsar una tecla, por ejemplo, la i, se abriera solo el inventario.

¿Alguien podría hacerme, o si sabe de la existencia de un script similar, de hacermelo? Le estaría muy agradecido y le pondría, por supuesto, en los créditos.
avatar
Dagharans
Iniciado
Iniciado

0/3

Créditos 21

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: Script de inventario [PEDIDO]

Mensaje por jehyknaria el 2012-04-05, 13:30

Con un simple evento se puede hacer, seria poner un evento en proceso paralelo y poner un condicionante de tocar x tecla. Dentro de ese condicionante seria cuestión de llamara la escena del inventario, que no recuerdo cómo era el comando exactamente, pero sería con lo de llamar script y añadir el comando que no recuerdo, pero puedes buscarlo por internet.
avatar
jehyknaria
Principiante
Principiante

0/3

Créditos 487

Gracias : 16

Volver arriba Ir abajo

RPG Maker XP Re: Script de inventario [PEDIDO]

Mensaje por silvanash el 2012-04-05, 13:30

Antes que nada, te aviso que para que funcione con la "i" tienes que instalar algún script que permita usar más teclas del teclado. RMXP permite por defecto usar Q, W, E, A, S, D, Z, X, C y los cursores. Te sugiero usar la "Z" para abrir el inventario.

Ahora a makear.

Haz un evento común en proceso paralelo activado con el interruptor que prefieras. Dentro de ese evento, pon un condiciones y efectos que sea "si tecla Z pulsada" y en el efecto, vas a la línea de scripts y pones "$scene = Scene_Item.new" (sin las comillas).

Con eso , cada vez que pulses "Z" se abrirá el inventario. Ahora para cerrarlo. Dale a F11 y entra en la base de datos de scripts. Localiza el script Scene_Item y ve a la línea 71. Cámbiala por esto: "$scene = Scene_Map.new". Con esto debería funcionar todo.
avatar
silvanash
Aventurero
Aventurero

0/3

Créditos 205

Gracias : 251

Volver arriba Ir abajo

RPG Maker XP Re: Script de inventario [PEDIDO]

Mensaje por Dagharans el 2012-04-05, 16:42

Antes que nada, muchísimas gracias por responder y tomarte la molestia de intentar solucionar mi problema ^^.
Hice todo lo que dijiste, pero por alguna razón, al llegar al punto de ir a Scene_Item, en la línea 71 me pone: Else

No sé si será eso lo que habrá que sustituir, pero lo veo raro. Ahora probaré, edito y digo que es lo que ocurre.

EDIT: Nada, no funciona si sustituyo eso en la línea 71.

Os dejo mi Scene_Item, y disculpadme, soy un novato en Scripts :S.

Spoiler:
Código:
#==============================================================================
# ■ Scene_Item
#------------------------------------------------------------------------------

class Scene_Item
# ------------------------------------ 
  def main
    @help_window = Window_Help.new
    @item_window = Window_Item.new
    @item_window.help_window = @help_window
    @target_window = Window_Target.new
    @target_window.visible = false
    @target_window.active = false
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @help_window.dispose
    @item_window.dispose
    @target_window.dispose
  end
# ------------------------------------ 
  def update
    @help_window.update
    @item_window.update
    @target_window.update
    if @item_window.active
      update_item
      return
    end
    if @target_window.active
      update_target
      return
    end
  end
# ------------------------------------ 

  def update_item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new(0)
      return
    end
    if Input.trigger?(Input::C)
      @item = @item_window.item
      unless @item.is_a?(RPG::Item)
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      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 @item.scope >= 3
        @item_window.active = false
        @target_window.x = (@item_window.index + 1) % 2 * 304
        @target_window.visible = true
        @target_window.active = true
        if @item.scope == 4 || @item.scope == 6
          @target_window.index = -1
        else
          @target_window.index = 0
        end
      else
        if @item.common_event_id > 0
          $game_temp.common_event_id = @item.common_event_id
          $game_system.se_play(@item.menu_se)
          if @item.consumable
            $game_party.lose_item(@item.id, 1)
            @item_window.draw_item(@item_window.index)
          end
          $scene = Scene_Map.new
          return
        end
      end
      return
    end
  end
# ------------------------------------ 
  def update_target
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      unless $game_party.item_can_use?(@item.id)
        @item_window.refresh
      end
      @item_window.active = true
      @target_window.visible = false
      @target_window.active = false
      return
    end
    if Input.trigger?(Input::C)
      if $game_party.item_number(@item.id) == 0
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      if @target_window.index == -1
        used = false
        for i in $game_party.actors
          used |= i.item_effect(@item)
        end
      end
      if @target_window.index >= 0
        target = $game_party.actors[@target_window.index]
        used = target.item_effect(@item)
      end
      if used
        $game_system.se_play(@item.menu_se)
        if @item.consumable
          $game_party.lose_item(@item.id, 1)
          @item_window.draw_item(@item_window.index)
        end
        @target_window.refresh
        if @item.common_event_id > 0
          $game_temp.common_event_id = @item.common_event_id
          $scene = Scene_Map.new
          return
        end
      end
      unless used
        $game_system.se_play($data_system.buzzer_se)
      end
      return
    end
  end
end
avatar
Dagharans
Iniciado
Iniciado

0/3

Créditos 21

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: Script de inventario [PEDIDO]

Mensaje por jehyknaria el 2012-04-05, 21:49

Puede que no sea la línea 71 exactamente la que se refiere en tu script de ítem, la línea que debes cambiar por la que te dice es la que pone $scene=Scene_Menú(0)
avatar
jehyknaria
Principiante
Principiante

0/3

Créditos 487

Gracias : 16

Volver arriba Ir abajo

RPG Maker XP Re: Script de inventario [PEDIDO]

Mensaje por Wecoc el 2012-04-05, 22:10

Pon este script encima de main:

Código:
class Scene_Map
  alias old_update update unless $@
  def update
    old_update
    if Input.trigger?(Input::Z)
      $game_system.se_play($data_system.decision_se)
      $scene = Scene_Item.new
      return
    end
  end
end
class Scene_Item
  alias old_update_item update_item unless $@
  def update_item
    old_update_item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
  end
end

Este pequeño script hace que al pulsar la D (en el script sale como una Z, en la línea 5) se abra el inventorio. Luego el problema está en que el botón I no viene por defecto en el input, pero puedes buscar otros inputs por la red. Luego si encuentras uno que acepte I (Falcao, IceDragon, etc. la verdad no me acuerdo) simplemente cambia esa Z en mi script por una I. O sinó también lo puedes dejar así con la D xDDD.

(D de Dinventorio xDDD ¿Dónde están mis Dítems? xDDDD)
avatar
Wecoc
Administrador
Administrador



Créditos 12284

Gracias : 645

Volver arriba Ir abajo

RPG Maker XP Re: Script de inventario [PEDIDO]

Mensaje por Dagharans el 2012-04-06, 14:07

Gracias, ya funciona, pero el problema está en que la tecla D ya está ocupada. ¿Como hago para que se utilize la tecla Z?
avatar
Dagharans
Iniciado
Iniciado

0/3

Créditos 21

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: Script de inventario [PEDIDO]

Mensaje por orochii el 2012-04-08, 04:21

La línea que dice:
Código:
if Input.trigger?(Input::Z)
..cámbiala por, en éste caso,
Código:
if Input.trigger?(Input::A)

Las teclas disponibles para usar son...
Z AA XQ R
X BS YW R
C CD ZLetra Identificador en script
Digamos que es como asignar teclas en la configuración de un emulador xD (?). El RPG Maker tiene esas teclas asignadas de esa manera, aunque el jugador puede cambiarlas usando F1 para abrir el cuadrito de opciones.

Espero... emm se me entienda =D,
Orochii Zouveleki
avatar
orochii
Reportero

0/3

Créditos 7792

Gracias : 461

Volver arriba Ir abajo

RPG Maker XP Re: Script de inventario [PEDIDO]

Mensaje por Dagharans el 2012-04-08, 13:09

Sí, sí, lo entiendo xD. ¡Muchísimas gracias, ahora sí que ya funciona todo a la perfección! =D
avatar
Dagharans
Iniciado
Iniciado

0/3

Créditos 21

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: Script de inventario [PEDIDO]

Mensaje por Archeran el 2017-11-27, 17:07

@Wecoc escribió:Pon este script encima de main:

Código:
class Scene_Map
  alias old_update update unless $@
  def update
    old_update
    if Input.trigger?(Input::Z)
      $game_system.se_play($data_system.decision_se)
      $scene = Scene_Item.new
      return
    end
  end
end
class Scene_Item
  alias old_update_item update_item unless $@
  def update_item
    old_update_item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
  end
end

Este pequeño script hace que al pulsar la D (en el script sale como una Z, en la línea 5) se abra el inventorio. Luego el problema está en que el botón I no viene por defecto en el input, pero puedes buscar otros inputs por la red. Luego si encuentras uno que acepte I (Falcao, IceDragon, etc. la verdad no me acuerdo) simplemente cambia esa Z en mi script por una I. O sinó también lo puedes dejar así con la D xDDD.

(D de Dinventorio xDDD ¿Dónde están mis Dítems? xDDDD)

Disculpa wecoc pero cuando trato de utilizar este script me dice error de sintaxis en la linea 11
¿como se puede solucionar?
avatar
Archeran
Iniciado
Iniciado

0/3

Créditos 2

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: Script de inventario [PEDIDO]

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.