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
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.
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
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 ;)
@Up, Podmień string na WideString, to uzyskasz znaki Unicode
//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.
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