Mundo Maker
¡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
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3763 miembros registrados.
El último usuario registrado es Carlos Rodriguez.

Nuestros miembros han publicado un total de 85781 mensajes en 12216 argumentos.

[XP]READABLE BOOKS

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [XP]READABLE BOOKS

Mensaje por AsFzKakarotto el 2017-08-17, 03:20

Esto marcará un antes y un después a la hora de leer un libro en sus proyectos.
Quiero dejar bien en claro que el dueño y creador de el script es: Playm
así que si hay que añadir a los créditos es a él, yo lo he traducido para todos ustedes.
Y en lo personal, no lo he visto en ningún lado.
Bueno ya basta de líos y vamos al grano, aquí se los dejo.

¿Que es?
Este sistema permitirá que el jugador al momento de abrir y leer un libro, lo haga de igual forma
a como si lo estuviera leyendo en la vida real, simulando mover las paginas de un lado a otro.
Como es con llamado de script te aconsejo crear libros como artículos y abrir las llamadas de una escritura con un evento común.




Como pueden ver el sistema es muy original pero hay que aclarar que puede
hacer que sus proyectos aumenten de tamaño o peso considerablemente si
es que se pretenden hacer muchas paginas.

Instrucciones:
♦ Paso 1: Necesitarán esta imagen en la carpeta "Pictures"



tiene que tener el nombre de "Bookback".

También un archivo de audio con el nombre de " bookflip" que debe estar
dentro de la carpeta "SE" de tu proyecto, o puedes descargar un audio de referencia aquí:

http://www.soundjay.com/misc/page-flip-01a.mp3

♦ Paso 2: Las Instrucciones vienen lo más detallado posible en el script.

Código:
#==============================================================================
#  Sistema lector de Libros - Script Readable Books
#------------------------------------------------------------------------------
#  Este sistema permitira que el jugador al momento de abrir y leer un
#  libro, lo haga de igual forma a como si lo estuviera leyendo en la vida
#  real, simulando mover las paginas de un lado a otro.
#  Cada pagina consistira en una imagen de 300x400 Pixeles de tamaño y deben
#  encontrarse en la siguiente ruta:
#
#  Graphics/Pictures/
#
#  Usted tambien para tener un mejor orden, puede definir las imagenes (Paginas)
#  de cada libro en diferentes carpetas, pero eso se explicará un poco despues.
#
#  Para crear un libro, en este script en la sección @books[X] = Game_Book.new
#  usted deberá crear un libro de acuerdo a las siguientes instrucciones:
#
#  @books[X] = Game_Book.new
#  @books[X].pages << "Y/Z"
#
#  En donde X usted añada el valor que usará para llamar un libro, como
#  ejemplo usaremos el número 0.
#
#  En Y usted añada el nombre de la carpeta que guardará las imagenes (paginas)
#  de el libro en cuestión, seguido de un /. Usted es libre de añadir o no está
#  carpeta extra (aunque se recomienda hacerlo) pero recuerde que debe estar
#  dentro de la carpeta Graphics/Pictures/
#
#  Finalmente en Z usted coloque el nombre de la imagen que será consideradá
#  como una pagina del libro. Obviamente usted puede añadir la cantidad de
#  imagenes (paginas) que usted desee, siempre y cuando se siga el siguiente
#  concepto: @books[X].pages << "Y/Z"
#  Ejemplo:

#  @books[X] = Game_Book.new
#  @books[X].pages << "Y/Z"
#  @books[X].pages << "Y/Z"
#  @books[X].pages << "Y/Z"
#  @books[X].pages << "Y/Z"
#
#  En conclusión debería quedar algo como el siguiente ejemplo:
#
#  @books[0] = Game_Book.new
#  @books[0].pages << "Primer_libro/Pagina_1"
#  @books[0].pages << "Primer_libro/Pagina_2"
#  @books[0].pages << "Primer_libro/Pagina_3"
#  @books[0].pages << "Primer_libro/Pagina_4"
#  @books[0].pages << "Primer_libro/Pagina_5"
#  @books[0].pages << "Primer_libro/Pagina_6"
#  @books[0].pages << "Primer_libro/Pagina_7"
#  @books[0].pages << "Primer_libro/Pagina_8"
#  @books[1] = Game_Book.new
#  @books[1].pages << "Segundo_libro/Pagina_1"
#  @books[1].pages << "Segundo_libro/Pagina_2"
#
#  Teniendo en cuenta que el orden de cada pagina dependerá de el orden en el
#  cual es llamado. (arriba hacia abajo).
#
#  Para llamar un libro desde el juego usted debe de usar el siguiente llamado
#  de script:
#
#  $game_temp.book_to_read = ID_book
#  $scene = Scene_Book.new
#
#  Donde "ID_book" usted debe añadir el número del libro que usted desea llamar,
#  segun los ejemplos anteriores podriamos llamar al libro de la númeración 0.
#  Quedando finalmente el llamado de script de la siguiente forma:
#
#  $game_temp.book_to_read = 0
#  $scene = Scene_Book.new
#
#  y así estariamos llamado al libro de id 0 que contiene 8 imagenes (paginas)
#  en su interior.
#------------------------------------------------------------------------------
# Autor:  Playm
# Datum:  September 2014
# Maker: 
# Lizenz: (CC BY-NC-SA 3.0)
#==============================================================================
#    HIER BEGINNT DER KERN DES SYSTEMS
#==============================================================================
# ** Game_System
#==============================================================================
class Game_System
  #--------------------------------------------------------------------------
  # * Alias
  #--------------------------------------------------------------------------
  alias_method( :org_ini_wo_books, :initialize )
  #--------------------------------------------------------------------------
  # * Objekt Initialisation
  #--------------------------------------------------------------------------
  def initialize
    org_ini_wo_books
    # Especifica tus paginas
    @books = []
    # Aquí comienza la creación de libros (Primer Libro)
    @books[0] = Game_Book.new
    @books[0].pages << "Buch/Bookpage_1"
    @books[0].pages << "Buch/Bookpage_2"
    @books[0].pages << "Buch/Bookpage_3"
    @books[0].pages << "Buch/Bookpage_4"
    @books[0].pages << "Buch/Bookpage_5"
    @books[0].pages << "Buch/Bookpage_6"
    @books[0].pages << "Buch/Bookpage_7"
    @books[0].pages << "Buch/Bookpage_8"
    @books[0].pages << "Buch/Bookpage_9"
    @books[0].pages << "Buch/Bookpage_10"
    @books[0].pages << "Buch/Bookpage_11"
    @books[0].pages << "Buch/Bookpage_12"
    @books[0].pages << "Buch/Bookpage_13"
    @books[0].pages << "Buch/Bookpage_14"
    @books[0].pages << "Buch/Bookpage_15"
    @books[0].pages << "Buch/Bookpage_16"
    @books[0].pages << "Buch/Bookpage_17"
    @books[0].pages << "Buch/Bookpage_18"
    @books[0].pages << "Buch/Bookpage_19"
    @books[0].pages << "Buch/Bookpage_20"
    @books[0].pages << "Buch/Bookpage_21"
    @books[0].pages << "Buch/Bookpage_22"
    @books[0].pages << "Buch/Bookpage_23"
    @books[0].pages << "Buch/Bookpage_24"
    @books[0].pages << "Buch/Bookpage_25"
    @books[0].pages << "Buch/Bookpage_26"
    @books[0].pages << "Buch/Bookpage_27"
    @books[0].pages << "Buch/Bookpage_28"
    @books[0].pages << "Buch/Bookpage_29"
    @books[0].pages << "Buch/Bookpage_30"
    @books[0].pages << "Buch/Bookpage_31"
    @books[0].pages << "Buch/Bookpage_32"
    @books[0].pages << "Buch/Bookpage_33"
    @books[0].pages << "Buch/Bookpage_34"
    @books[0].pages << "Buch/Bookpage_35"
    @books[0].pages << "Buch/Bookpage_36"
    @books[0].pages << "Buch/Bookpage_37"
    @books[0].pages << "Buch/Bookpage_38"
    @books[0].pages << "Buch/Bookpage_39"
    @books[0].pages << "Buch/Bookpage_40"
    @books[0].pages << "Buch/Bookpage_41"
    @books[0].pages << "Buch/Bookpage_42"
    @books[0].pages << "Buch/Bookpage_43"
    @books[0].pages << "Buch/Bookpage_44"
    @books[0].pages << "Buch/Bookpage_45"
    @books[0].pages << "Buch/Bookpage_46"
    @books[0].pages << "Buch/Bookpage_47"
    @books[0].pages << "Buch/Bookpage_48"
    @books[0].pages << "Buch/Bookpage_49"
    @books[0].pages << "Buch/Bookpage_50"
    @books[0].pages << "Buch/Bookpage_51"
    @books[0].pages << "Buch/Bookpage_52"
    # (Segundo Libro)
    @books[1] = Game_Book.new
    @books[1].pages << "Buch2/BookPage_1"
    @books[1].pages << "Buch2/BookPage_2"
    @books[1].pages << "Buch2/BookPage_3"
    @books[1].pages << "Buch2/BookPage_4"
    @books[1].pages << "Buch2/BookPage_5"
    @books[1].pages << "Buch2/BookPage_6"
    @books[1].pages << "Buch2/BookPage_7"
    @books[1].pages << "Buch2/BookPage_8"
    @books[1].pages << "Buch2/BookPage_9"
    @books[1].pages << "Buch2/BookPage_10"
    @books[1].pages << "Buch2/BookPage_11"
    @books[1].pages << "Buch2/BookPage_12"
  end
  #--------------------------------------------------------------------------
  # * Attr
  #--------------------------------------------------------------------------
  attr_reader :books
end
#==============================================================================
# ** Game_Temp
#==============================================================================
class Game_Temp
  #--------------------------------------------------------------------------
  # * Attr
  #--------------------------------------------------------------------------
  attr_accessor :book_to_read
end
#==============================================================================
# ** Game_Book
#------------------------------------------------------------------------------
#  Speichert ein einzelnes Buch als Sammlung der Seiten, jeweils als Bildname
#==============================================================================
class Game_Book
  #--------------------------------------------------------------------------
  # * Objektinitialisierung
  #--------------------------------------------------------------------------
  def initialize
    @pages = []
  end
  #--------------------------------------------------------------------------
  # * Der letzte Index bei dem eine Seite vollständig angezeigt werden kann
  #--------------------------------------------------------------------------
  def last_index
    @pages.size - 2
  end
  #--------------------------------------------------------------------------
  # * Attr
  #--------------------------------------------------------------------------
  attr_reader :pages
end
#==============================================================================
# ** Spriteset_Book
#------------------------------------------------------------------------------
#  Stellt ein Game_Book auf dem Bildschirm da, mit der Möglichkeit zu blättern
#==============================================================================
class Spriteset_Book
  #--------------------------------------------------------------------------
  # * Initialisiert die grafische Darstellung eines aufgeschlagenen Buches
  #--------------------------------------------------------------------------
  def initialize( vp, book )
    @book = book
    @index = 0
    setup_bitmaps
    @page_width = @facing.width
    @page_height= @facing.height
    @part_width = @page_width / 50
   
    @background = Sprite.new( vp )
    @background.bitmap = RPG::Cache.picture("Bookback") # Imagen de fondo
    @background.x = 320 - @background.bitmap.width / 2
    @background.y = 240 - @background.bitmap.height / 2
   
    @canvas = Sprite.new( vp )
    @canvas.bitmap = Bitmap.new(640,480)
   
    @progress = 0
    @flipping = false
   
    refresh
  end
  #--------------------------------------------------------------------------
  # * Macht die sichtbaren Seiten verfügbar
  #--------------------------------------------------------------------------
  def setup_bitmaps
    @facing = RPG::Cache.picture(@book.pages[@index  ])
    @front  = RPG::Cache.picture(@book.pages[@index+1])
    @back  = RPG::Cache.picture(@book.pages[@index+2] || "")
    @reveal = RPG::Cache.picture(@book.pages[@index+3] || "")
  end
  #--------------------------------------------------------------------------
  # * Zeichne die linke und rechte Seite
  #--------------------------------------------------------------------------
  def draw_facing_and_reveal
    draw_y = 240 - @page_height / 2
    @canvas.bitmap.blt( 320 - @page_width, draw_y, @facing, @facing.rect)
    @canvas.bitmap.blt(              320, draw_y, @reveal, @reveal.rect)
  end
  #--------------------------------------------------------------------------
  # * Zeichne die Seite, die gerade umgeblättert wird
  #--------------------------------------------------------------------------
  def draw_flipping_page
    src_bitmap = @progress > @part_width ? @back : @front
   
    for i in 0..49
      sr = Rect.new( @part_width * i, 0, @part_width, @front.height )
      sr.x = @page_width - sr.x if @progress > @part_width
      dr = Rect.new(0,0,0,0)
      dr.x      = 320 + (@part_width - @progress) * i
      if @progress > @part_width
        dr.y      = 240 - @page_height / 2 - ( (@part_width - @progress/2) * i ) / 2
        dr.width  = @part_width - (@part_width - @progress / 2)
        dr.height = @page_height + ( (@part_width - @progress / 2) * i )
      else
        dr.y      = 240 - @page_height / 2 - ( @progress * i ) / 2
        dr.width  = @part_width - @progress
        dr.height = @page_height + ( @progress * i )
      end
      @canvas.bitmap.stretch_blt(dr, src_bitmap, sr)
    end
   
  end
  #--------------------------------------------------------------------------
  # * Zeichne das Spriteset neu
  #--------------------------------------------------------------------------
  def refresh
    @canvas.bitmap.clear
    draw_facing_and_reveal
    draw_flipping_page
  end
  #--------------------------------------------------------------------------
  # * Definir en Audio.se_play("Audio/SE/
  #  el sonido cuando se mueve la Pagina hacia la Izquierda.
  #--------------------------------------------------------------------------
  def flip_forward
    if @index < @book.last_index
      #play flipp SE
      Audio.se_play("Audio/SE/bookflip", 60, 120)
      @flipping = :forward
      @progress = 0
    end
  end
  #--------------------------------------------------------------------------
  # * Definir en Audio.se_play("Audio/SE/
  #  el sonido cuando se mueve la Pagina hacia la Derecha.
  #--------------------------------------------------------------------------
  def flip_backward
    if @index > 0
      Audio.se_play("Audio/SE/bookflip", 60, 120)
      @flipping = :backward
      @progress = @part_width * 2
      @index -= 2
      setup_bitmaps
    end
  end
  #--------------------------------------------------------------------------
  # * Prüfe die Eingabe
  #--------------------------------------------------------------------------
  def update_input
    return if @flipping
    flip_forward  if Input.trigger? Input::RIGHT
    flip_backward if Input.trigger? Input::LEFT
  end
  #--------------------------------------------------------------------------
  # * Update der Buchseitenanimation
  #--------------------------------------------------------------------------
  def update_flip_animation
    if @flipping == :forward
      @progress += 1
      if @progress == @part_width * 2
        @index += 2
        @flipping = false
        @progress = 0
        setup_bitmaps
      end
    elsif @flipping == :backward
      @progress -= 1
      if @progress == 0
        @flipping = false
        @progress = 0
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    update_input
    refresh
    update_flip_animation
  end
  #--------------------------------------------------------------------------
  # * Entferne die Grafiken
  #--------------------------------------------------------------------------
  def dispose
    @background.dispose
    @canvas.bitmap.dispose
    @canvas.dispose
  end
end
#==============================================================================
# ** Scene_Book
#==============================================================================
class Scene_Book
  #--------------------------------------------------------------------------
  # * Speichere bei der Objektinitialisierung, aus welcher Scene man kam
  #--------------------------------------------------------------------------
  def initialize
    @scene_origin = $scene.class
  end
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    return $scene = @scene_origin.new if $game_temp.book_to_read.nil?
    @book = $game_system.books[ $game_temp.book_to_read ]
    @background = Spriteset_Map.new
    @book_sprite = Spriteset_Book.new( nil, @book)
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      break if $scene != self
    end
    Graphics.freeze
    @background.dispose
    @book_sprite.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    if Input.trigger?(Input::B) or Input.trigger?(Input::C)
      command_return
      return
    end
    @book_sprite.update
  end
  #--------------------------------------------------------------------------
  # *  Verlasse die Scene
  #--------------------------------------------------------------------------
  def command_return
    $game_system.se_play($data_system.decision_se)
    $scene = @scene_origin.new
  end
end



Créditos: Playm

Si les complica un poco aquí les dejo una Demostración
es idea mia o nadie agradece mis aportes. ojala les guste y Sayonara Makers
avatar
AsFzKakarotto
Novato
Novato

0/3

Créditos 98

Gracias : 19

Volver arriba Ir abajo

RPG Maker XP Re: [XP]READABLE BOOKS

Mensaje por Marshmello el 2017-08-17, 03:32

Vaya, no conocía este sistema de leer libros, la verdad que esta bastante guay :D

Este probablemente sea el script mas original, avanzado y el mejor visualmente en su categoría. Justamente andaba buscando algo similar a esto. Quizá el unico problemilla es el tamaño que pueda aumentar el proyecto al usarlo... Pero meh, creo que valdrá la pena.

¡Gran aporte!

_________________
"I'm so alone... Trying to find my way back home to you..." 
PREMIOS:
avatar
Marshmello
Moderador
Moderador



Créditos 1220

Gracias : 81

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.