Versión imprimible del tema: Pedido sobre conversión de Script VX a VXace
URL: https://anterior.mundodeluxe.com/1501293/11503347-pedido-sobre-conversion-de-script-vx-a-vxace/

De la comunidad de foros: MundoDeluxe
URL: https://anterior.mundodeluxe.com


Autor: Galdhor, 09/May/2015, 13:52


Pues eso, conseguí este script que permite grabar una partida para los que quieran hacer una historia tipo Novela Gráfica

Lo vi muy funcional en el VX, pero me gustaría ver si alguien puede pasarlo al Ace (si no es tan complicado)

Acá los susodichos scripts:

Código:
# Screen shot pantalla Ver 1.0 por semiconductores
# Http://h2so5.web.fc2.com/
# Descripción: Muestra una captura de pantalla para guardar / pantalla de carga.
# Genera un Screen, antes de abrir la pantalla de guardar.
# Reemplaza el Guardar en el menú.
# Debe tenerse en cuenta, que las grabaciones anteriores o que no hayan generado un screen, posiblemente no lo lea
# Tenga en cuenta que se convierte en un poco más lento guardar / cargar.

class Scene_Base
  def snapshot_for_background
    $game_temp.background_bitmap.dispose
    $game_temp.background_bitmap = Graphics.snap_to_bitmap
    $screen_shot = Graphics.snap_to_bitmap
    $game_temp.background_bitmap.blur
  end
end

class Window_SaveFile < Window_Base
  #--------------------------------------------------------------------------
  # ● refrescar
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    name = Vocab::File + " #{@file_index + 1}"
    self.contents.draw_text(4, 0, 200, WLH, name)
    @name_width = contents.text_size(name).width
    if @file_exist
      draw_party_characters(152, 58)
      draw_playtime(5,35, contents.width - 4, 2)
      @screen_dump = @screen_dump.dump_to_bitmap
      self.contents.blt(420,0,@screen_dump,@screen_dump.rect)
    end
  end
  #--------------------------------------------------------------------------
  # ● Drawing of play time
  #     x     : drawing destination X coordinate
  #     y     : drawing destination y coordinate
  #     width : width
  #     align : placement
  #--------------------------------------------------------------------------
  def draw_playtime(x, y, width, align)
    hour = @total_sec / 60 / 60
    min = @total_sec / 60 % 60
    sec = @total_sec % 60
    time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
    self.contents.font.color = normal_color
    begin
      self.contents.draw_text(x, y, width, WLH, time_string, 0)
    rescue
    end
  end
 
  #--------------------------------------------------------------------------
  # ● Load a part of the game data
   # Switch and variable by default unused (for expansion, such as place name display)
  #--------------------------------------------------------------------------
  def load_gamedata
    @time_stamp = Time.at(0)
    @file_exist = FileTest.exist?(@filename)
    if @file_exist
      file = File.open(@filename, "r")
      @time_stamp = file.mtime
      begin
        @characters     = Marshal.load(file)
        @frame_count    = Marshal.load(file)
        @last_bgm       = Marshal.load(file)
        @last_bgs       = Marshal.load(file)
        @game_system    = Marshal.load(file)
        @game_message   = Marshal.load(file)
        @game_switches  = Marshal.load(file)
        @game_variables = Marshal.load(file)
        @screen_dump    = Marshal.load(file)
        @total_sec = @frame_count / Graphics.frame_rate
      rescue
        @file_exist = false
      ensure
        file.close
      end
    end
  end
 
end

class Scene_File < Scene_Base
  #--------------------------------------------------------------------------
  # ● Writing of save data
   # File: write file objects (already opened)
  #--------------------------------------------------------------------------
  def write_save_data(file)
    characters = []
    for actor in $game_party.members
      characters.push([actor.character_name, actor.character_index])
    end
    $game_system.save_count += 1
    $game_system.version_id = $data_system.version_id
    @last_bgm = RPG::BGM::last
    @last_bgs = RPG::BGS::last
    @screen_dump = $screen_shot.bitmap_to_dump
    Marshal.dump(characters,           file)
    Marshal.dump(Graphics.frame_count, file)
    Marshal.dump(@last_bgm,            file)
    Marshal.dump(@last_bgs,            file)
    Marshal.dump($game_system,         file)
    Marshal.dump($game_message,        file)
    Marshal.dump($game_switches,       file)
    Marshal.dump($game_variables,      file)
    Marshal.dump(@screen_dump,         file)
    Marshal.dump($game_self_switches,  file)
    Marshal.dump($game_actors,         file)
    Marshal.dump($game_party,          file)
    Marshal.dump($game_troop,          file)
    Marshal.dump($game_map,            file)
    Marshal.dump($game_player,         file)
  end
 
  #--------------------------------------------------------------------------
  # ● read the save data
   # File: read file object (already opened)
  #--------------------------------------------------------------------------
  def read_save_data(file)
    characters           = Marshal.load(file)
    Graphics.frame_count = Marshal.load(file)
    @last_bgm            = Marshal.load(file)
    @last_bgs            = Marshal.load(file)
    $game_system         = Marshal.load(file)
    $game_message        = Marshal.load(file)
    $game_switches       = Marshal.load(file)
    $game_variables      = Marshal.load(file)
    @screen_shot         = Marshal.load(file)
    $game_self_switches  = Marshal.load(file)
    $game_actors         = Marshal.load(file)
    $game_party          = Marshal.load(file)
    $game_troop          = Marshal.load(file)
    $game_map            = Marshal.load(file)
    $game_player         = Marshal.load(file)
    if $game_system.version_id != $data_system.version_id
      $game_map.setup($game_map.map_id)
      $game_player.center($game_player.x, $game_player.y)
    end
  end
 
end

class Bitmap
  #--------------------------------------------------------------------------
  # ● Convert Bitmap into a format that can be dump
  #--------------------------------------------------------------------------
  def bitmap_to_dump
    array = []
    xzoom = 544 / 75
    yzoom = 416 / 58
    for x in 0..78
      for y in 0..57
        color = self.get_pixel(x * xzoom, y * yzoom)
        array.push(color)
      end
    end
  return array
  end

end
 
class Array
  #--------------------------------------------------------------------------
  # ● conversion from dump to Bitmap
  #--------------------------------------------------------------------------
  def dump_to_bitmap
    bmp = Bitmap.new(80,58)
    begin
      for x in 0..78
        for y in 0..57
          bmp.set_pixel(x,y,self[x * 58 + y])
        end
      end
    rescue
    end
   
    return bmp
   
  end
end

Añado este porque no estoy seguro si funciona junto al otro, o es un script diferente

Código:
# Pictures of reversal
#
# ------------------------------------------------- -------------------------
# Version: 1.0.1
# Correspondence: RPG Maker VX: RGSS2
# System work's: CACAO
# Distribution source: http://cacaosoft.web.fc2.com/
# Ream fault destination: cacao_softNo_se_permiten_correos.co.jp

class Game_Picture
  #--------------------------------------------------------------------------
  # * Public instance variable
  #--------------------------------------------------------------------------
  attr_accessor :mirror
  #--------------------------------------------------------------------------
  # * Object initialization
  #--------------------------------------------------------------------------
  alias _cao_initialize_picture initialize
  def initialize(number)
    _cao_initialize_picture(number)
    @mirror = false
  end
  #--------------------------------------------------------------------------
  # * Display of the picture
  #     name: file name
  #    Origin: origin
  #    X: X coordinate
  #    Y: Y coordinate
  #    Zoom_x: X direction expansion rate
  #    Zoom_y: Y direction enlargement factor
  #    Opacity: opacity
  #    Blend_type: blend method
  #--------------------------------------------------------------------------
  alias _cao_show_picture show
  def show(name, origin, x, y, zoom_x, zoom_y, opacity, blend_type)
    _cao_show_picture(name, origin, x, y, zoom_x, zoom_y, opacity, blend_type)
    @mirror = false
  end
end

class Sprite_Picture < Sprite
  alias _cao_update_picture update
  #--------------------------------------------------------------------------
  # ○ Frame update
  #--------------------------------------------------------------------------
  def update
    _cao_update_picture
    self.mirror = @picture.mirror if @picture_name != ""
  end
end

class Game_Interpreter
  #--------------------------------------------------------------------------
  # ○ Label
  #--------------------------------------------------------------------------
  alias _cao_command_118_picture command_118
  def command_118
    case @params[0]
    when /^P反転[(d+)]/
      screen.pictures[$1.to_i].mirror ^= true
    when /^P正向[(d+)]/
      screen.pictures[$1.to_i].mirror = true
    when /^P反向[(d+)]/
      screen.pictures[$1.to_i].mirror = false
    end
    _cao_command_118_picture
  end
end

 Ojala que alguien me pueda hacer ese favor, no veo que sea muy extenso el script y no se que tan compatibles son ambos sistemas, pero ojala se haga el milagro

de antemano ya les voy dando las gracias

Saludos


Autor: kyonides-arkanthos, 09/May/2015, 17:26


El segundo script solo sirve para revertir la imagen. En lo personal no me parece muy útil, sobretodo si no se incluye otro script que sea el principal. En otras palabras el segundo es un add-on, un complemento, algo secundario o terciario.

Después de tratar con ese primer script, no noté la diferencia entre lo que dice que ofrece y lo que se ve siempre en VX Ace al guardar la partida. Sí hay que hacerle algunos cambios, pero luego de eso no se ve nada nuevo o distinto.


Autor: Galdhor, 10/May/2015, 01:38


Lo que te permite en si es: (tratare de explicarme lo mejor que pueda porque soy malo explicando textualmente >.<)

Permitir Grabar entre diálogos, o en contenedores de diálogos (si así se expresa mejor)

El guardado normal, del rpg maker, te permite grabar después de terminar la secuencia de dialogo. Como en una Novela Gráfica TODO ES DIALOGO ininterrumpidos, usar el comando grabar del rpg maker tradicional solo se lograba tras complicados engines y juegos de variables etc. (algo que hice pero aún así cuando CARGABAS la partida se repetía todo el dialogo y no quedaba en donde lo grababas anteriormente, un pequeño fastidio que no incomodaba mucho, salvo repetir los dialogos)

Este script facilita ese guardado entre diálogos y no solo eso, sino que guarda el dialogo en donde te quedaste, cosa que podías guardar tu juego en cualquier secuencia y al cargarlo continuaba el dialogo en donde lo dejaste..... no se si me explique bien?

Más que todo facilita el guardado para los que quieran hacer un juego tipo Novela Gráfica, Si necesistas un ejemplo visual, te pasare un video de un juego hecho en RPG maker con ese script para que veas su funcionalidad

https://www.youtube.com/watch?v=1Y6MFi03nJ4

El script fue usado en ese juego


Autor: Galdhor, 11/May/2015, 19:23


No hay ningún alma caritativa que me pueda ayudar con este pequeño (si no es grande) pedido?


Autor: kyonides-arkanthos, 11/May/2015, 22:23


La cuestión es que no hay certeza de si realmente solo con el script o los scripts posteados se puede lograr que un RPG Maker se convierta en creador de juegos de novelas gráficas.


Autor: Galdhor, 11/May/2015, 22:39


Es que no es una suposición, es un hecho, y el hecho es que ese script se usó para hacer un juego tipo novela gráfica pero para el Rpg VX, y pues me gustaria si se le pudiera hacer su versión en el Ace

Te paso el link si gustas, asi tu lo ves por ti mismo, y sacas tu propias conclusiones

http://www.mediafire.com/download/p[....]ocaloid+Attorney+%5BESP%5D+v1.0.rar


Autor: kyonides-arkanthos, 12/May/2015, 15:51


Ya confirmé una sospecha que yo tenía desde hacía un tiempo, dicho script es secundario tal y como me lo imaginé. En realidad solo le agrega la opción de incluir un screenshot del escenario donde se le permita grabar la partida. En otras palabras, sin ese script Ud. sí puede crear un juego a lo Ace Attorney, pero debe de copiar el estilo de los eventos en combinación con los eventos comunes. Son estos los verdaderos encargados de permitir o prohibir el guardado de partidas.


Autor: Galdhor, 12/May/2015, 16:17


Si exacto, ahora la gran pregunta del momento

Tu crees que es factible de hacer una versión para el Ace?

y De ser factible, seria muy trabajoso?

Y si no fuera muy trabajoso, Me podrías hacer el favor (?)