¡Bienvenido a Universo Maker!
¿Es esta la primera vez que visitas el foro? Si es así te recomendamos que te registres para tener completo acceso a todas las áreas y secciones del foro, así también podrás participar activamente en la comunidad. Si ya tienes una cuenta, conectate cuanto antes.
Iniciar Sesión Registrarme

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo Mensaje [Página 1 de 1.]

#1 [RPG Maker XP] Diario el Sáb Sep 08, 2012 9:09 pm

Razor

avatar
Autor: ForeverZer0
Versión: 1.0
Descripción: Este script te permite mantener un "diario" o bloc de notas en tu juego es compatible con todo y usa el sistema de window default del maker.


Características



  • Plug 'n' Play
  • Fácil uso


Instrucciones



  • Coloque el script arriba de Main.
  • Configura tus notas en el modulo del script.
  • Otras instrucciones están en el script.[ingles]


Script



Código:

#+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
# Diary Scene
# Author: ForeverZer0
# Version: 1.0
# Date: 12.18.2010
#+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
#
# Introduction:
#
#  This is a basic script that will allow you to keep a "diary" or notepad in
#  your game. It is very simple to use, and uses a simple interface for
#  displaying the notes.
#
# Features:
#
#  - Group your notes into "chapters". 
#  - Automatically formats text to fit on each line in a legible format.
#  - Simple script call to add text.
#  - Option to define each note in the script editor, then simply use a script
#    call to add it.
#  - Option to use the map as the background.
#
# Instructions:
#
#  - Place script above main, and below default scripts.
#  - Make configurations below.
#  - To call the scene, use this syntax:  $scene = Scene_Diary.new
#  - To add an entry, use this syntax:
#
#    Diary.add_entry(CHAPTER, TEXT)
#     
#    CHAPTER: An arbitrary integer to define what group to add the note to.
#    TEXT: Either a string which will be the text added to the diary, or an
#          integer which will return the string defined in the configuration
#          below. The second method will make it easier to make long notes
#          without filling up the little script call box.
#
# Author's Notes:
#
#  - Please be sure to report any bugs/issues with the script. Enjoy!
#
#+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

module Diary
#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#                        BEGIN CONFIGURATION
#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

  MAP_BACKGROUND = true
  # Set to true if you would like the map to show behind the window.
  RETURN_SCENE = Scene_Map
  # The scene that the game returns to when you exit the diary.
  SCENE_ARGUMENTS = []
  # Define any arguments that may need called with scene if need be. Place them
  # in the array in the order in which they are normally called.
 
  def self.chapter_name(chapter)
    # Define the names of the "chapters".
    # when CHAPTER then "CHAPTER_NAME"
    return case chapter
    when 1 then 'Millenium Fair'
    when 2 then 'What Happened to Marle?'
    end
  end
 
  def self.entry(index)
    # Define the strings that correspond with each index. The index can be called
    # instead of actual text to add an entry.
    # when INDEX then "TEXT"
    return case index
    when 0 then 'I forgot today was the day of the big fair! I was supposed to go and see

Lucca\'s new invention.'
    when 1 then 'I need to escort Marle around the fair, and maybe play a few games.'
    when 2 then 'Marle was sucked into the vortex. I think it had something to do with

that pendant that she was wearing...'
    when 3 then 'This place is very strange, and everyone talks funny. It\'s all vaguely

the same, yet different. Where am I?'
    end
  end

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#                          END CONFIGURATION
#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 
  def self.add_entry(chapter, text)
    # Add the chapter number if it does not exist.
    if $game_party.diary[chapter] == nil
      $game_party.diary[chapter] = []
    end
    if text.is_a?(String)
      # Add the new entry to the end of the chapter.
      $game_party.diary[chapter].push(text)
    elsif text.is_a?(Integer)
      # Get the defined note if the text is a number.
      $game_party.diary[chapter].push(self.entry(text))
    end
  end
end

#===============================================================================
# ** Window_Diary
#===============================================================================

class Window_Diary < Window_Base
 
  attr_reader :lines
 
  def initialize
    super(0, 64, 640, 416)
    self.back_opacity = Diary::MAP_BACKGROUND ? 160 : 255
    self.contents = Bitmap.new(width - 32, height - 32)
    @lines = []
  end
 
  def chapter=(chapter)
    # Reset the current entries.
    entries = $game_party.diary[chapter]
    entries = [''] if entries == nil
    # Divide the current entries into lines based off the text size and length.
    @lines = entries.collect {|text| self.contents.slice_text(text, 608) }
    @lines.flatten!
    refresh
  end
 
  def refresh
    # Dispose bitmap, returning if no lines are defined.
    self.contents.clear
    return if @lines.size == 0
    self.contents.dispose
    # Create bitmap to contain the lines.
    self.contents = Bitmap.new(self.width - 32, @lines.size * 32)
    # Draw each line.
    @lines.each_index {|i| self.contents.draw_text(0, i*32, 608, 32, @lines[i])}
  end
end

#===============================================================================
# ** Bitmap
#===============================================================================
   
class Bitmap
 
  # Blizzard's slice_text method. This method can be removed if you have another
  # script that already uses it.
  def slice_text(text, width)
    words = text.split(' ')
    return words if words.size == 1
    result, current_text = [], words.shift
    words.each_index {|i|
    if self.text_size("#{current_text} #{words[i]}").width > width
      result.push(current_text)
      current_text = words[i]
    else
      current_text = "#{current_text} #{words[i]}"
    end
    result.push(current_text) if i >= words.size - 1}
    return result
  end
end

#===============================================================================
# ** Scene_Diary
#===============================================================================

class Scene_Diary
 
  def main
    # Create the windows.
    @sprites = [Window_Help.new, Window_Diary.new]
    if Diary::MAP_BACKGROUND
      @sprites.push(Spriteset_Map.new)
      @sprites[0].back_opacity = 160
    end
    @keys = $game_party.diary.keys.sort
    @names = @keys.collect {|chapter| Diary.chapter_name(chapter) }
    # Find current index, setting to first chapter if undefined.
    @index = @keys.index(Diary.chapter_name(@chapter))
    @index = 0 if @index == nil
    # Set the information for each window.
    @sprites[0].set_text(@names[@index] == nil ? '' : @names[@index])
    @sprites[1].chapter = @keys[@index]
    # Transition Graphics.
    Graphics.transition
    # Main loop.
    loop { Graphics.update; Input.update; update; break if $scene != self }
    # Dispose windows.
    Graphics.freeze
    @sprites.each {|sprite| sprite.dispose }
  end
 
  def update
    # Branch by what input is recieved.
    if Input.repeat?(Input::UP) || Input.trigger?(Input::UP)
      $game_system.se_play($data_system.cursor_se)
      @sprites[1].oy -= 32 if @sprites[1].oy if @sprites[1].oy > 0
    elsif Input.repeat?(Input::DOWN) || Input.trigger?(Input::DOWN)
      $game_system.se_play($data_system.cursor_se)
      @sprites[1].oy += 32 if @sprites[1].oy < (@sprites[1].contents.height-384)
    elsif Input.trigger?(Input::L) || Input.trigger?(Input::R)
      $game_system.se_play($data_system.decision_se)
      # Change the current index.
      @index += Input.trigger?(Input::L) ? -1 : 1
      @index %= @keys.size
      # Display the name of the current chapter in the header.
      @sprites[0].set_text(@names[@index], 1)
      # Change the current chapter.
      @sprites[1].chapter = @keys[@index]
    elsif Input.trigger?(Input::B)
      # Play cancel SE and return to the defined scene.
      $game_system.se_play($data_system.cancel_se)
      args, scene = Diary::SCENE_ARGUMENTS, Diary::RETURN_SCENE
      $scene = (args == []) ? scene.new : scene.new(*args)
    end
  end
 
end

#===============================================================================
# ** Game_Party
#===============================================================================

class Game_Party
 
  attr_accessor :diary
 
  alias zer0_diary_init initialize
  def initialize
    zer0_diary_init
    @diary = {}
  end
end

Un Saludo
Out.-





Todos mis aportes por Mediafire tienen contraseña, esa es: www.universomaker.net
Esto es para evitar plagio, asegúrense de copiar y pegar la contraseña.

#2 Re: [RPG Maker XP] Diario el Jue Sep 27, 2012 5:52 pm

Edisonortiz15

avatar
Ta Bueno Ópalo Sonriente

#3 Re: [RPG Maker XP] Diario el Jue Nov 08, 2012 7:30 pm

fonsoh

avatar
Como se usa exactamente?

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

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