¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Últimos temas
» Baikon 13 [Juego Completo]
por gantzer49 Hoy a las 14:22

» Ayuda! Mecánicas interesantes...
por orochii Hoy a las 12:47

» Tengo mis dudas.....
por silvanash Hoy a las 11:56

» Subir vida al equipar protector o cualquier otra arma o accesorio
por orochii Hoy a las 01:25

» Tetra Master [XP][VX][ACE]
por Producciones The Golden Ayer a las 22:49

» Obligar a usar un objeto de menú
por alex1633 Ayer a las 22:22

» Si nesesitas un dibujo entra aqui
por jasuso Ayer a las 21:34

» El poder oculto (Demo)
por alex1633 Ayer a las 19:30

» Origenes de Osaka
por CuteXiora Ayer a las 12:51

» Hola a tod@s ♥
por orochii Ayer a las 03:24

Afiliados
Estadísticas
Tenemos 3706 miembros registrados.
El último usuario registrado es Tekacon.

Nuestros miembros han publicado un total de 82137 mensajes en 11620 argumentos.
Navega con Google Chrome
[DESCARGA]

[RMXP] Choice Edit

 :: RPG Maker :: Scripts

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [RMXP] Choice Edit

Mensaje por Wecoc el 2012-09-08, 18:34

Este pequeño edit lo que hace es que al mostrar elecciones en mensaje se muestren horizontalmente y no verticalmente. No pido créditos porque es un script sencillo, pero no digais que lo habéis hecho vosotros xD

ejemplo:
Código:
Antes:
¿Quieres ir a pescar?
[ SÍ ]
  NO

Ahora:
¿Quieres ir a pescar?
[ SÍ ]    NO

Respeta text_size, line_count y da margen suficiente entre las elecciones.

EDITO: ¡Nueva versión disponible! (Versión 1.1)
Me puse a toquetearlo de casualidad y lo arreglé un poco.
No cambié muchas cosas internamente, solo solucioné algunos fallos.

Cosas nuevas:

- Ahora se puede activar y desactivar muy facilmente; solo hay que poner true (activado) o false (desactivado) al @choice_short del principio (en el script se ve rápido). @choice_short = true | false
- También se puede activar o desactivar por llamar script: $game_temp.choice_short = true | false
- Aunque esté activado, si las palabras son tan largas que quedaría cortado, utiliza el sistema vertical directamente.

Código:
#==============================================================================
# Choice Edit - versión 1.1
# by Wecoc
#==============================================================================

class Game_Temp
 
  attr_accessor :choice_short
  attr_accessor :choice_type
  attr_accessor :choice_data
 
  alias ini initialize unless $@
  def initialize
    ini
   
    # Para activar o desactivar el script lo único que tienes que hacer es
    # modificar la línea siguiente.
   
        @choice_short = true
       
    # false: siempre vertical (default), true : palabras cortas horizontal
    # Si las opciones tienen palabras largas siempre saldrá vertical.
   
    @choice_data = nil
    @choice_type = 0 # 0 = vertical, 1 = horizontal
  end
end

class Interpreter
  def setup_choices(parameters)
    $game_temp.choice_max = parameters[0].size
    $game_temp.choice_data = parameters[0]
   
    w = $game_temp.choice_data.to_s.length
    if w > 26
      $game_temp.choice_type = 0
    else
      if $game_temp.choice_short == true
        $game_temp.choice_type = 1
      else
        $game_temp.choice_type = 0
      end
    end
   
    if $game_temp.choice_type == 0 # Vertical
      for text in parameters[0]
        $game_temp.message_text += text + "\n"
      end   
    else # Horizontal
      for text in parameters[0]
        $game_temp.message_text += text + "      "
      end
      $game_temp.message_text += "\n"
    end
    $game_temp.message_text += "\n"
    $game_temp.choice_cancel_type = parameters[1]
    current_indent = @list[@index].indent
    $game_temp.choice_proc = Proc.new { |n| @branch[current_indent] = n }
  end
end

class Interpreter
  def command_101 # Show Text
    if $game_temp.message_text != nil
      return false
    end
    @message_waiting = true
    $game_temp.message_proc = Proc.new { @message_waiting = false }
    $game_temp.message_text = @list[@index].parameters[0] + "\n"
    line_count = 1
    loop do
      if @list[@index+1].code == 401 # Show Text
        $game_temp.message_text += @list[@index+1].parameters[0] + "\n"
        line_count += 1
      else
        if @list[@index+1].code == 102 # Show Choices
         
          a = @list[@index+1].parameters[0]
          w = a.to_s.length
          if w > 26
            $game_temp.choice_type = 0
          else
            if $game_temp.choice_short == true
              $game_temp.choice_type = 1
            else
              $game_temp.choice_type = 0
            end
          end
 
          if (@list[@index+1].parameters[0].size <= 4 - line_count and
          $game_temp.choice_type == 0) or (line_count < 4 and
          $game_temp.choice_type == 1) then
            @index += 1
            $game_temp.choice_start = line_count
            setup_choices(@list[@index].parameters)
          end
        elsif @list[@index+1].code == 103 # Input Number
          if line_count < 4
            @index += 1
            $game_temp.num_input_start = line_count
            $game_temp.num_input_variable_id = @list[@index].parameters[0]
            $game_temp.num_input_digits_max = @list[@index].parameters[1]
          end
        end
        return true
      end
      @index += 1
    end
  end
end

class Window_Message < Window_Selectable
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    x = y = 0
    if $game_temp.choice_start == 0
      x = 8
    end
    @cursor_width = 0
    if $game_temp.message_text != nil
      text = $game_temp.message_text
      begin
        last_text = text.clone
        text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
      end until text == last_text
      text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
        $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
      end
      text.gsub!(/\\\\/) { "\000" }
      text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
      text.gsub!(/\\[Gg]/) { "\002" }
      while ((c = text.slice!(/./m)) != nil)
        if c == "\000"
          c = "\\"
        end
        if c == "\001"
          text.sub!(/\[([0-9]+)\]/, "")
          color = $1.to_i
          if color >= 0 and color <= 7
            self.contents.font.color = text_color(color)
          end
          next
        end
        if c == "\002"
          if @gold_window == nil
            @gold_window = Window_Gold.new
            @gold_window.x = 560 - @gold_window.width
            if $game_temp.in_battle
              @gold_window.y = 192
            else
              @gold_window.y = self.y >= 128 ? 32 : 384
            end
            @gold_window.opacity = self.opacity
            @gold_window.back_opacity = self.back_opacity
          end
          next
        end
        if c == "\n"
          if y >= $game_temp.choice_start
            @cursor_width = [@cursor_width, x].max
          end
          y += 1
          x = 0
         
          if y >= $game_temp.choice_start and $game_temp.choice_type == 0
            x = 8
          end
          next
        end
        self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
        x += self.contents.text_size(c).width
      end
    end
   
    # If choice
    if $game_temp.choice_max > 0
      @column_max = $game_temp.choice_max if $game_temp.choice_type == 1
      @item_max = $game_temp.choice_max
      self.active = true
      self.index = 0
    end
    # If number input
    if $game_temp.num_input_variable_id > 0
      digits_max = $game_temp.num_input_digits_max
      number = $game_variables[$game_temp.num_input_variable_id]
      @input_number_window = Window_InputNumber.new(digits_max)
      @input_number_window.number = number
      @input_number_window.x = self.x + 8
      @input_number_window.y = self.y + $game_temp.num_input_start * 32
    end
  end

  def update_cursor_rect
    if @index >= 0
      if $game_temp.choice_type == 0
        n = $game_temp.choice_start + @index
        self.cursor_rect.set(8, n * 32, @cursor_width, 32)
      else
        n = $game_temp.choice_start
        w = self.contents.text_size($game_temp.choice_data[@index]).width
        a = 0
        for i in 0..@index-1
          a += self.contents.text_size($game_temp.choice_data[i] + "      ").width
        end
        self.cursor_rect.set(a, n * 32, w+10, 32)
      end
    else
      self.cursor_rect.empty
    end
  end
end

Versión antígua
Spoiler:
Código:
#==============================================================================
# Choice Edit - versión 1.0
# by Wecoc
#==============================================================================

class Game_Temp
  attr_accessor :choice_data
  alias ini initialize
  def initialize
    ini
    @choice_data = nil
  end
end

class Interpreter
  def setup_choices(parameters)
    $game_temp.choice_max = parameters[0].size
    $game_temp.choice_data = parameters[0]
    for text in parameters[0]
      $game_temp.message_text += text + "      "
    end
    $game_temp.message_text += "\n"
    $game_temp.choice_cancel_type = parameters[1]
    current_indent = @list[@index].indent
    $game_temp.choice_proc = Proc.new { |n| @branch[current_indent] = n }
  end
end

class Interpreter
  def command_101 # Show Text
    if $game_temp.message_text != nil
      return false
    end
    @message_waiting = true
    $game_temp.message_proc = Proc.new { @message_waiting = false }
    $game_temp.message_text = @list[@index].parameters[0] + "\n"
    line_count = 1
    loop do
      if @list[@index+1].code == 401 # Show Text
        $game_temp.message_text += @list[@index+1].parameters[0] + "\n"
        line_count += 1
      else
        if @list[@index+1].code == 102 # Show Choices
          if line_count < 4
            @index += 1
            $game_temp.choice_start = line_count
            setup_choices(@list[@index].parameters)
          end
        elsif @list[@index+1].code == 103 # Input Number
          if line_count < 4
            @index += 1
            $game_temp.num_input_start = line_count
            $game_temp.num_input_variable_id = @list[@index].parameters[0]
            $game_temp.num_input_digits_max = @list[@index].parameters[1]
          end
        end
        return true
      end
      @index += 1
    end
  end
end

class Window_Message < Window_Selectable
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    x = y = 0
    @cursor_width = 0
    if $game_temp.message_text != nil
      text = $game_temp.message_text
      begin
        last_text = text.clone
        text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
      end until text == last_text
      text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
        $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
      end
      text.gsub!(/\\\\/) { "\000" }
      text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
      text.gsub!(/\\[Gg]/) { "\002" }
      while ((c = text.slice!(/./m)) != nil)
        if c == "\000"
          c = "\\"
        end
        if c == "\001"
          text.sub!(/\[([0-9]+)\]/, "")
          color = $1.to_i
          if color >= 0 and color <= 7
            self.contents.font.color = text_color(color)
          end
          next
        end
        if c == "\002"
          if @gold_window == nil
            @gold_window = Window_Gold.new
            @gold_window.x = 560 - @gold_window.width
            if $game_temp.in_battle
              @gold_window.y = 192
            else
              @gold_window.y = self.y >= 128 ? 32 : 384
            end
            @gold_window.opacity = self.opacity
            @gold_window.back_opacity = self.back_opacity
          end
          next
        end
        if c == "\n"
          if y >= $game_temp.choice_start
            @cursor_width = [@cursor_width, x].max
          end
          y += 1
          x = 0
          next
        end
        self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
        x += self.contents.text_size(c).width
      end
    end
    # If choice
    if $game_temp.choice_max > 0
      @column_max = $game_temp.choice_max
      @item_max = $game_temp.choice_max
      self.active = true
      self.index = 0
    end
    # If number input
    if $game_temp.num_input_variable_id > 0
      digits_max = $game_temp.num_input_digits_max
      number = $game_variables[$game_temp.num_input_variable_id]
      @input_number_window = Window_InputNumber.new(digits_max)
      @input_number_window.number = number
      @input_number_window.x = self.x + 8
      @input_number_window.y = self.y + $game_temp.num_input_start * 32
    end
  end
 
  def update_cursor_rect
    if @index >= 0
      n = $game_temp.choice_start
      w = self.contents.text_size($game_temp.choice_data[@index]).width
      case @index
      when 0
        a = 0
      when 1
        a1 = self.contents.text_size($game_temp.choice_data[0] + "      ").width
        a = a1
      when 2
        a1 = self.contents.text_size($game_temp.choice_data[0] + "      ").width
        a2 = self.contents.text_size($game_temp.choice_data[1] + "      ").width
        a = a1 + a2
      when 3
        a1 = self.contents.text_size($game_temp.choice_data[0] + "      ").width
        a2 = self.contents.text_size($game_temp.choice_data[1] + "      ").width
        a3 = self.contents.text_size($game_temp.choice_data[2] + "      ").width
        a = a1 + a2 + a3
      end
      self.cursor_rect.set(a, n * 32, w+10, 32)
    else
      self.cursor_rect.empty
    end
  end
end

Solo pegadlo encima de main :D


Última edición por Wecoc el 2012-12-08, 03:00, editado 1 vez
avatar
Wecoc
Administrador
Administrador



Créditos 8783

Gracias : 413

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Choice Edit

Mensaje por Aarl el 2012-09-08, 18:50

Se ve muy bueno para elecciones de palabras cortas o de una sola palabra. No termino de visualizarlo con opciones largas.

¿Podrías hacer una versión para más de dos opciones que se disponga en 2x2?

Saludos~
avatar
Aarl
Veterano
Veterano

0/3

Créditos 141

Gracias : 37

https://soundcloud.com/aarl

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Choice Edit

Mensaje por Wecoc el 2012-12-08, 03:08

Buenas, he actualizado a una nueva versión. Las novedades están en el post de arriba.

Hace bastante que hice ese script, lo tenía abandonado, por acabar, y me he puesto a mejorarlo casi que de casualidad (¿aburrimiento extremo?) xD

Piltrafa97: No hice lo del 2x2 porque no me gustó demasiado la idea para este tipo de elecciones en mensaje, y sobretodo porque sería liarse mucho en el Interpreter... Si lo necesitaras mucho (aún xD) ya es distinto, intentaría hacerte algo como pudiera, pero en principio el plan es dejarlo así.
avatar
Wecoc
Administrador
Administrador



Créditos 8783

Gracias : 413

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Choice Edit

Mensaje por Ledai el 2012-12-08, 13:03

Una pregunta, y si hay más de dos elecciones, por ejemplo cuatro, ¿Entran todas en el cuadro de texto??
gracias por el buen trabajo...
avatar
Ledai
Aventurero
Aventurero

0/3

Créditos 2432

Gracias : 160

http://ahurallg.blogspot.com.es/

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Choice Edit

Mensaje por Wecoc el 2012-12-08, 16:28

Cambia de horizontal a vertical directamente según el tamaño total que ocupe la línea; si es demasiado larga para que quepa todo en una línea saldrá vertical directamente. No tiene en cuenta el número de elecciones ahí. Si son cuatro elecciones cortas y caben en la línea pondrá las cuatro de lado.

EJEMPLO:
Código:
¿Quieres acompañarme en mi aventura?
SÍ    [ VALE ]    OK    DE ACUERDO
xDD

Si son demasiado largas y hay cuatro, hará lo que hace por defecto, saltar al siguiente mensaje para poner las cuatro.

EJEMPLO:
Código:
¿Quieres acompañarme en mi aventura?


-----------
  ¡Sí, por mí encantado!
[ Está bien, te acompañaré ]
  Pues claro, faltaría más
  De acuerdo, por mí vale...

Todo eso va igual que siempre n_n No me "cargué" nada, solo añadí la otra opción.
avatar
Wecoc
Administrador
Administrador



Créditos 8783

Gracias : 413

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Choice Edit

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Scripts

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