Ogłoszenie 

Uwaga! To forum jest w trybie offline.
Wszelką pomoc uzyskasz pod adresem
forum.ultimateam.pl


Administracja Forum


Poprzedni temat «» Następny temat
Notebook by Jet
Autor Wiadomość
SenzoPL 




Preferowany:
RPG Maker VX

Dołączył: 15 Wrz 2012
Posty: 1
Wysłany: Pią 07 Gru, 2012 16:35
Notebook by Jet
~ Notebook ~


Krótki opis:
Skrypt dodaje Notatnik który umożliwia czytanie plików .txt

Autor:
Jet10985 (Jet)

Tłumaczenie:
iSenzo (SenzoPL)

Kompatybilność:
RPG Maker VX

Skrypt:
Spoiler:

Kod:
#===============================================================================
# Notebook Menu
# By Jet10985 (Jet)
#===============================================================================
# This script will add a Notebook menu to the game, which can be used to add
# entries to the notebook that the player can read.
# This script has: 6 customization options.
#===============================================================================
# Overwritten Methods:
# None
#-------------------------------------------------------------------------------
# Aliased methods:
# Scene_Title: initialize
#===============================================================================
=begin
Aby użyć tego skryptu, musisz mieć folder w katalogu o nazwie gry
Notebook

Tam są twoje notatki. .txt powinny się tam znajdować.
Ten skrypt działa tylko pliki txt w folderze, i to, gdzie
chwyta pliki dla konwersji. rvdata jeśli używane.
--------------------------------------------------------------------------------
Aby dodać nowe wpisy do dziennika, użyj tego w event'cie "Script..." komenda.

add_entry("nazwa pliku")

"nazwa pliku" powinna być nazwa pliku .txt w folderze Notebook, bez
.txt. Tak mówią mam plik o nazwie Test.txt: add_entry("Test")

Nawet jeśli używasz pliku. Rvdata, nazwy plików pozostają takie same, więc upewnij się, że
Pamiętasz swoje nazwy.
--------------------------------------------------------------------------------
Możesz wywołać scenę dziennika z tym kodem w wydarzeniu "Script..." komenda:

$scene = Scene_Notebook.new

Czasopismo będzie niedostępne chyba, że gracz ma co najmniej 1 wpis
--------------------------------------------------------------------------------
Jeśli wpis tekstu jest zbyt długi wysokość tekstu będzie wyświetlana w całości, a następnie
Gracz musi użyć Q, aby przewinąć w górę lub W, aby przewinąć w dół.
--------------------------------------------------------------------------------
Aby wymusić następną linię wiersza w tekście umieścić \line wewnątrz pliku tekstowego gdzie
aby wymusić tekstu do następnej linii.
=end

module Notebook
 
  # Czy chcesz przekonwertować wszystkie pliki. Txt w "Notebook" folderu do pliku danych
  # .rvdata które można encrpyted z gry, a używane
  # z USE_RVDATA_FILE opcji?
  DO_CONVERSION_TO_RVDATA = false
 
  # Czy chcesz użyć pliku Notebook.rvdata do generowania z
  # DO_CONVERSION_TO_RVDATA zamiast plików .txt w "notebook" folderu?
  USE_RVDATA_FILE = false
 
  # Jak ma się nazywać Notebook?
  NOTEBOOK_NAME = "Notebook"
 
  # Co robi czcionki wykorzystanie notebooka? Pierwszy elementem podstawowym jest czcionka
  # chcesz, a będzie on przejść każdej pozycji, jeśli czcionka nie istnieje
  # aż znajdzie czcionkę, która nie istnieje.
  NOTEBOOK_FONT = ["Verdana", "Arial", "Courier New"]
 
  # Jaki jest rozmiar czcionki w notatniku? 20 jest domyślnym
  NOTEBOOK_FONT_SIZE = 20
 
  # Ile miejsca zostanie podane dla każdej linii? 24 jest domyślne
  NOTEBOOK_WLH = 24
 
end

#===============================================================================
# NIE EDYTUJ DALEJ, JEŚLI NIE WIESZ, CO ROBIĆ.
#===============================================================================
class Game_System
 
  attr_accessor :notebook_entries
 
  alias jet1835_initialize initialize unless $@
  def initialize(*args, &block)
    @notebook_entries = []
    jet1835_initialize(*args, &block)
  end
end

class Game_Interpreter
 
  def add_entry(filename)
    unless $game_system.notebook_entries.include?(filename)
      $game_system.notebook_entries.push(filename)
    end
  end
end

class Scene_Title
 
  alias jet1934_initialize initialize unless $@
  def initialize(*args, &block)
    convert_txt if Notebook::DO_CONVERSION_TO_RVDATA && $TEST
    jet1934_initialize(*args, &block)
  end
 
  def convert_txt
    file = Dir.entries("Notebook")
    file.reverse!
    2.times {|i| file.pop }
    file.reverse!
    if file.empty?
      p "No files found in Notebook, aborting conversion process."
    end
    text_hash = {}
    for txt in file
      text_hash[txt] = File.open("Notebook/#{txt}", "r") {|a| a.read}
    end
    b = File.new("Data/Notebook.rvdata", "wb")
    Marshal.dump(text_hash, b)
    b.close
    p "Notebook file successfully converted."
  end
end

class String
 
  def each_word
    array = self.split(" ")
    if block_given?
      array.each {|a| yield a }
    else
      return array
    end
  end
end

class Window_Notebook < Window_Base
 
  include Notebook
 
  def initialize(filename)
    super(160, 56, Graphics.width - 160, Graphics.height - 56)
    @filename = filename
    refresh(@filename)
  end
 
  def refresh(filename)
    self.oy = 0
    form_bitmap_rect(filename)
    self.contents.font.name = NOTEBOOK_FONT
    self.contents.font.size = NOTEBOOK_FONT_SIZE
    wlh = NOTEBOOK_WLH
    i = 0
    @file_text.each_line {|line|
      text = line.gsub(/\r|\n/i, "")
      self.contents.draw_text(0, 0 + i * wlh, self.width - 32, wlh, text)
      i += 1
    }
  end
 
  def form_bitmap_rect(filename)
    if USE_RVDATA_FILE
      file = load_data("Data/Notebook.rvdata")[filename + ".txt"]
    else
      file = File.open("Notebook/#{filename}.txt", "r") {|a| a.read }
    end
    new_text = ""
    width_taken = 0
    height_taken = 0
    file.gsub!(/\r\n/i, " ")
    file.gsub!(/\\line/i, " \\xjet ")
    file.each_word {|word|
      width_taken += self.contents.text_size("#{word} ").width
      if word == "\\xjet"
        width_taken = 0
        new_text.concat("\n")
        height_taken += NOTEBOOK_WLH
      elsif width_taken > self.width - 32
        width_taken = 0
        new_text.concat("\n#{word} ")
        width_taken += self.contents.text_size("#{word} ").width
        height_taken += NOTEBOOK_WLH
      else
        new_text.concat("#{word} ")
      end
    }
    @file_text = new_text
    @height_taken = height_taken
    self.contents = Bitmap.new(self.width - 32, @height_taken + 32)
  end
end

class Window_Entries < Window_Base

  def initialize(x, y)
    super(x, y, 160, WLH + 32)
    refresh
  end

  def refresh
    contents.clear
    contents.font.color = system_color
    contents.draw_text(0, 0, 100, 24, "Entries:")
    contents.font.color = normal_color
    contents.draw_text(104, 0, 40, 24, $game_system.notebook_entries.size, 1)
  end
end


class Scene_Notebook < Scene_Base
 
  def initialize
    @return_scene = $scene.class.to_s
    @return = false
  end
 
  def start
    if $game_system.notebook_entries.empty?
      $scene = eval(@return_scene + ".new")
      @return = true
      return
    end
    super
    create_menu_background
    @help_window = Window_Help.new
    @help_window.set_text(Notebook::NOTEBOOK_NAME, 1)
    @notebook_window = Window_Notebook.new($game_system.notebook_entries[0])
    @entries_window = Window_Entries.new(0, Graphics.height - 54)
    @command_window = Window_Command.new(160, $game_system.notebook_entries)
    @command_window.height = Graphics.height - 110
    @command_window.y += 56
  end
 
  def update
    return if @return
    super
    update_menu_background
    old_index = @command_window.index
    @command_window.update
    if old_index != @command_window.index
      @notebook_window.refresh(@command_window.commands[@command_window.index])
    end
    @notebook_window.update
    if Input.trigger?(Input::B)
      return_scene
    end
    if @notebook_window.contents.height > @notebook_window.height - 32
      wlh = Notebook::NOTEBOOK_WLH
      if Input.trigger?(Input::RIGHT)
        @notebook_window.oy = [@notebook_window.oy + wlh,
          @notebook_window.contents.height - @notebook_window.height + 32].min
      elsif Input.trigger?(Input::LEFT)
        @notebook_window.oy = [@notebook_window.oy - wlh,
          0].max
      end
    end
  end
 
  def return_scene
    $scene = eval(@return_scene + ".new")
  end
 
  def perform_transition
    super unless @return
  end
 
  def terminate
    return if @return
    super
    dispose_menu_background
    @help_window.dispose
    @notebook_window.dispose
    @entries_window.dispose
    @command_window.dispose
  end
end


Screeny:
Spoiler:



Demo:


Dodatkowe informacje:
Jestem trochę słaby z angielskiego.
Jest to mój pierwszy temat na stronie.
 
 
makerowiec64 




Preferowany:
RPG Maker 95

Pomógł: 2 razy
Dołączył: 02 Wrz 2012
Posty: 181
Skąd: się tu wziąłem?
Wysłany: Sob 08 Gru, 2012 21:17
O rany!Jak to naprawdę czyta .txt'y,to jak dobrze pójdzie to będę czytał zamiast za pomocą notatnika to za pomocą makera! :lol:
________________________
99 % świrów czyta mój podpis z ręką na myszce.
Nie odchylaj ręki - jest już za późno :haha:

Wiem,to mogłem zrobić w większym rozmiarze.Przypatrz się bardziej!
 
 
 
hubr 



Preferowany:
RPG Maker VX

Dołączył: 01 Sty 2013
Posty: 7
Wysłany: Sob 05 Sty, 2013 16:17
jak zrobić by ten skrypt uruchamiał się z zakładki w menu dostępnym podczas gry?
 
 
ka0909 



Preferowany:
RPG Maker XP

Pomógł: 20 razy
Dołączył: 02 Paź 2010
Posty: 122
Wysłany: Sob 05 Sty, 2013 16:50
hubr trzeba przerobić scene_menu aby wyświetlało notatnik.
________________________
ka0909 <--- Tajemnicze kanumerki
Pomagam w skryptach XP,VX i VX ace.
Napisz priv jeśli potrzebujesz pomocy ;)
 
 
hubr 



Preferowany:
RPG Maker VX

Dołączył: 01 Sty 2013
Posty: 7
Wysłany: Sob 05 Sty, 2013 20:11
ka0909
Która część odpowiada za wyświetlanie?
Spoiler:


Kod:
     when 0      # Item
        $scene = Scene_Item.new
      when 1,2,3  # Skill, equipment, status
        start_actor_selection
      when 4      # Save
        $scene = Scene_File.new(true, false, false)
      when 5      # Notatnik
       $scene = Scene_Notebook.new(true, false, false)
        when 6      # End Game
        $scene = Scene_End.new


Wpisałem pomiędzy save, a end game notatnik,
a potem dodałem linijkę
Spoiler:


Kod:
  def update_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $scene = Scene_Map.new
    elsif Input.trigger?(Input::C)
      if $game_party.members.size == 0 and @command_window.index < 5
        Sound.play_buzzer
        return
      elsif $game_system.save_disabled and @command_window.index == 5
        Sound.play_buzzer
        return
      end
      Sound.play_decision
      case @command_window.index
      when 0      # Item
        $scene = Scene_Item.new
      when 1,2,3  # Skill, equipment, status
        start_actor_selection
      when 4      # Save
        $scene = Scene_File.new(true, false, false)
      when 5      # Notatnik
       $scene = Scene_Notebook.new
        when 6      # End Game
        $scene = Scene_End.new
      end
    end
  end

 
 
ka0909 



Preferowany:
RPG Maker XP

Pomógł: 20 razy
Dołączył: 02 Paź 2010
Posty: 122
Wysłany: Sob 05 Sty, 2013 21:18
Spróbuj zamienić to co podałem. Napis będzie pomiędzy zakończeniem i zapisaniem.
Powinno działać ale jak będą błędy to pisz.
Spoiler:


Kod:

#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  This class performs the menu screen processing.
#==============================================================================

class Scene_Menu < Scene_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     menu_index : command cursor's initial position
  #--------------------------------------------------------------------------
  def initialize(menu_index = 0)
    @menu_index = menu_index
  end
  #--------------------------------------------------------------------------
  # * Start processing
  #--------------------------------------------------------------------------
  def start
    super
    create_menu_background
    create_command_window
    @gold_window = Window_Gold.new(0, 360)
    @status_window = Window_MenuStatus.new(160, 0)
  end
  #--------------------------------------------------------------------------
  # * Termination Processing
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_menu_background
    @command_window.dispose
    @gold_window.dispose
    @status_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    update_menu_background
    @command_window.update
    @gold_window.update
    @status_window.update
    if @command_window.active
      update_command_selection
    elsif @status_window.active
      update_actor_selection
    end
  end
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  def create_command_window
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = Vocab::status
    s5 = Vocab::save
    s6 = 'Notatnik'
    s7 = Vocab::game_end
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
    @command_window.index = @menu_index
    if $game_party.members.size == 0          # If number of party members is 0
      @command_window.draw_item(0, false)     # Disable item
      @command_window.draw_item(1, false)     # Disable skill
      @command_window.draw_item(2, false)     # Disable equipment
      @command_window.draw_item(3, false)     # Disable status
    end
    if $game_system.save_disabled             # If save is forbidden
      @command_window.draw_item(4, false)     # Disable save
    end
  end
  #--------------------------------------------------------------------------
  # * Update Command Selection
  #--------------------------------------------------------------------------
  def update_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $scene = Scene_Map.new
    elsif Input.trigger?(Input::C)
      if $game_party.members.size == 0 and @command_window.index < 4
        Sound.play_buzzer
        return
      elsif $game_system.save_disabled and @command_window.index == 4
        Sound.play_buzzer
        return
      end
      Sound.play_decision
      case @command_window.index
      when 0      # Item
        $scene = Scene_Item.new
      when 1,2,3  # Skill, equipment, status
        start_actor_selection
      when 4      # Save
        $scene = Scene_File.new(true, false, false)
      when 5      #Notatnik
        $scene = Scene_Notebook.new
      when 6      # End Game
        $scene = Scene_End.new
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Start Actor Selection
  #--------------------------------------------------------------------------
  def start_actor_selection
    @command_window.active = false
    @status_window.active = true
    if $game_party.last_actor_index < @status_window.item_max
      @status_window.index = $game_party.last_actor_index
    else
      @status_window.index = 0
    end
  end
  #--------------------------------------------------------------------------
  # * End Actor Selection
  #--------------------------------------------------------------------------
  def end_actor_selection
    @command_window.active = true
    @status_window.active = false
    @status_window.index = -1
  end
  #--------------------------------------------------------------------------
  # * Update Actor Selection
  #--------------------------------------------------------------------------
  def update_actor_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      end_actor_selection
    elsif Input.trigger?(Input::C)
      $game_party.last_actor_index = @status_window.index
      Sound.play_decision
      case @command_window.index
      when 1  # skill
        $scene = Scene_Skill.new(@status_window.index)
      when 2  # equipment
        $scene = Scene_Equip.new(@status_window.index)
      when 3  # status
        $scene = Scene_Status.new(@status_window.index)
      end
    end
  end
end


---------------------------------------------------
PS.
Cytat:
Która część odpowiada za wyświetlanie?

Ta część odpowiada za wybór ;)
________________________
ka0909 <--- Tajemnicze kanumerki
Pomagam w skryptach XP,VX i VX ace.
Napisz priv jeśli potrzebujesz pomocy ;)
 
 
Laura 




Pomogła: 2 razy
Dołączyła: 28 Wrz 2012
Posty: 49
Wysłany: Nie 06 Sty, 2013 12:59
da się zrobić by były polskie znaki?
 
 
spartanPAGE 




Pomógł: 12 razy
Dołączył: 07 Gru 2011
Posty: 103
Skąd: Hellada
Wysłany: Nie 06 Sty, 2013 13:44
@Up, Podmień string na WideString, to uzyskasz znaki Unicode :roll:
//ffffire...
________________________


Programowanie jest moją pasją. Programuję w C, C++, C#, Javie i Delphi. Jeśli czegoś porzebujesz (związanego z tymi językami), śmiało możesz pisać na PW.
 
 
Laura 




Pomogła: 2 razy
Dołączyła: 28 Wrz 2012
Posty: 49
Wysłany: Nie 10 Lut, 2013 11:42
Jak zrobić by tekst przeszedł do następnej linii?
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Nie 10 Lut, 2013 12:39
W pliku .txt trzeba na końcu linii dodać:
Kod:
\line
________________________


 
 
 
Laura 




Pomogła: 2 razy
Dołączyła: 28 Wrz 2012
Posty: 49
Wysłany: Nie 10 Lut, 2013 12:44
dzięki
 
 
xGamerPLz 




Preferowany:
RPG Maker XP

Dołączył: 24 Sty 2013
Posty: 12
Wysłany: Wto 12 Lut, 2013 23:03
Czy da się zrobić by skrypt był kompatybilny z rgss1 (rmxp)
________________________
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group | Template Klam by Ayene