¡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
» Tutorial Interactivo [Uso de interruptores]
por Ledai Hoy a las 16:58

» Necesito Script
por Elian84 Hoy a las 04:44

» Holaaa a tod@s!!!
por chronoMxx Hoy a las 03:41

» [AYUDA]Hootshot de moghunter
por Rudy_kinneas Hoy a las 01:06

» El poder oculto (Segunda entrega)
por alex1633 Ayer a las 23:18

» Hola mucho gusto
por Hk Diamond Ayer a las 13:49

» SoraDeathss se presenta!
por chronoMxx Ayer a las 07:50

» {AYUDA}Blizz-ABS Script
por chronoMxx Ayer a las 06:45

» las cosas como son...
por Bleuw Ayer a las 04:18

» Busco artistas graficos para proyecto serio
por Rudy_kinneas 2016-12-02, 20:52

Afiliados
Estadísticas
Tenemos 3381 miembros registrados.
El último usuario registrado es Hk Diamond.

Nuestros miembros han publicado un total de 79767 mensajes en 11247 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

Wecoc
Administrador
Administrador



Créditos 8263

Gracias : 372

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~

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í.

Wecoc
Administrador
Administrador



Créditos 8263

Gracias : 372

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...

Ledai
Aventurero
Aventurero

0/3

Créditos 1366

Gracias : 125

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.

Wecoc
Administrador
Administrador



Créditos 8263

Gracias : 372

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Choice Edit

Mensaje por Contenido patrocinado Hoy a las 20:18


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.