Jump to content
Rpg²S Forum

*Diario di viaggio modificato


Andre4e
 Share

Recommended Posts

Diario di viaggio modificato

Descrizione


Corretto bug colore perchè non funzionava
Aggiunta funzione cambia font
Aggiunta funzione Faceset

Autore

 

Autore originale sylaer
Modificato da Andre4e

Allegati

 

Demo

Istruzioni per l'uso

 

Inserite lo script in una nuova classe sopra main..istruzioni x l'uso all'interno dello script!
Immagini all'interno della demo!

Script:

 

 

 

=begin

--------------------------------------------------------------------------
Scipt Diario

################################################
##Creato da Sylaer###### Modificato da Andre4e##
################################################



Per richiamare il diario
usare il chiama script tramite evento e inserire
questo codice :

$scene = Scene_Diary.new(true)


--------------------------------------------------------------------------

Instruzioni per inserire il diario nel menu:
Per prima cosa bisogna modificare il menu in modo che visualizzi il diario:

1)Aprire il Scene_Menu e trovare una serie sN = "Qualche cosa" es.
s6 = "Esci dal Gioco" e mettere sotto questi elementi un'altro elemento
con scritto s e accanto il numero successivo all'ultimo visulizzato es.
nel mio caso sarà s7 = "Diario".

2)Modificare la linea sottostante vale dire:
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
con questa:
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s7, s6])
Cioè mettere il Diario al penultimo posto del menu.

3)In fondo al Scene_Menu c'è il def update con una serie di when
l'ultimo dovrebbe essere when 5, di solito è così, va sostituito con when 6
sotto a questo mettete:
when 5
$game_system.se_play($data_system.decision_se)
$scene = Scene_Diary.new
e sotto a questo dovrebbe esserci un end.

E' inoltre possibile impostare il gioco in modo che il diario sia chiamato da
un evento comune basta inserire questo nel call script:

$scene = Scene_Diary.new(true)

In questo modo è possibile richiamare il diario anche da oggetto.
--------------------------------------------------------------------------
Ora veniamo a come funziona:
In breve nel diario viene scritto tutto quello che si trova nei file delle
pagine presenti nella cartella di gioco Data\Diary\. Questo significa che
per funzionare il diario ha bisogno della cartella. Quindi creala.
Per qunato riguarda le pagine basta specificare il numero di pagine
che si vuole qui:
=end
NUM_DIARY_PAGES = 10
=begin
Ora avvia il gioco una volta e richiama il diario. Si può notare che è vuoto
ma ha esattamente le pagine indicate(Per cambiare pagina i tasti sono
ovviamente le frecce direzionali sinistra e destra).
Adesso nella cartella Diary su Data ci saranno un numero di file pari al
numero di pagine indicate.
E' sufficente aprire questi file con un editor di testo e modificare il
contenuto per osservare i risultati.
Sul diario viene mostrato ciò che è scritto in questi file, lettera per
lettara, tuttavia le lettere accentate non vengono riconosciute.
--------------------------------------------------------------------------
Ci sono poi una serie di funzioni che è possibile utilizzare.
Funzioni del testo:
1)/[N] Se inserite questo nel testo del Diary con N il numero di una switch
la righa a cui è asseggnata non verrà visualizzata se la switch è impostata
su off, IMPORTANTE: la / va PER FORZA messa come primo carattere della riga.

2)/K[N] Come sopra solo che se mettete il valore K ad un numero maggiore di 1
la condizione di visualizzazzione verrà estesa alle K-1 righe succssive.

3)Se inserite [t] oppure [T] si inserirà nel testo una tabulazione " ".
--------------------------------------------------------------------------
Si può specificare il font e la grandezza di esso con queste righe:
=end
DIARY_FONT = "Monotype Corsiva"
DIARY_FONT_SIZE = 16
=begin
Alcune funzioni sono le stesse dei messaggi:
- \c[N] Imposta il colore della linea ad uno degli 8 colori
predefiniti(1-7).
- \v[N] Mostra il valore della variabile N nel punto in cui è inserita.
- \n[N] Mostra il nome dell'eroe N.

*************************************************
Funzioni aggiunte da Andre4e:
**************
- \t[Font] Cambiare Font(Permanente)
Se il carattere è formato da più di una parola scriverlo così:
es: \t[Times New Roman] e non \t[TimesNewRoman]
**************
- \f[Nome grafica] Visualizzare un'immagine
della cartella progetto/graphics/pictures
La stringa corretta per visualizzare un'immagine è
\x[X] \y[Y] \f[Nome grafica]

X = coordinata x....se non viene inserito x
default è 0
Y = coordinata y....se non viene inserito x
default è 0
Nome grafica = nome dell'immagine da visualizzare
Il file deve essere .png
Le immagini posso avvere una dimensione massima
di 96 x 96.. x modificare questo paramentro
cercare la riga:
self.contents.blt(@x, @y, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
e Modificare il due numeri in fondo
*************************************************

Se volete commentare qualcosa tutto quello dopo il carattere # non verrà
visualizzato, almeno per quella linea.

Infine se si esce e si rientra dalla finestra del diario le pagine visualizzate
sono le stesse, cioè viene memorizzata la posizione nel diario.

Questo è tutto. Spero che vi piaccia.
=end

# ---------------------------------
# Little_Arrow class
# ---------------------------------
class Little_Arrow < Sprite

def initialize(viewport,mirror = false)
super(viewport)
self.bitmap = RPG::Cache.picture("arrow")
self.ox = 0
self.oy = 0
self.z = 250
self.mirror = mirror
end
end

# ---------------------------------
# Window_DiaryPage class
# ---------------------------------

class Window_DiaryPage < Window_Base

def initialize(page)

@page = page

if @page % 2 == 1
super(64,32,320-64,480-64)
else
super(320+16,32,320-64,480-64)
end
self.contents = Bitmap.new(width - 32, height - 32)
self.opacity = 0
self.contents.font.name = DIARY_FONT
self.contents.font.size = DIARY_FONT_SIZE
self.contents.font.color = Color.new(0,0,0)


refresh unless @page == 0
end

def refresh

file = File.open("Data/Diary/Page" + @page.to_s + ".rxdata","a")
file.close
file = File.open("Data/Diary/Page" + @page.to_s + ".rxdata")
str = file.readlines





y = 0
k_lines = 0
k_switch = 0
pace = self.contents.font.size
for i in 0..str.size-1
color = 8

str[i].gsub!(/\\[Cc]\[([0-9]+)\]/) do
color = $1.to_i
str[i].sub!(/\\[Cc]olor\[([0-9]+)\]/){ "" }
end


str[i].gsub!(/#/) do
str[i].gsub!(/./m,"")

end



@x = 0
str[i].gsub!(/\\[xX]\[([0-9]+)\]/)do
@x = $1.to_i
str[i].sub!(/\\[xX]co\[([0-9]+)\]/){ "" }
end

@y = 0
str[i].gsub!(/\\[yY]\[([0-9]+)\]/)do
@y = $1.to_i
str[i].sub!(/\\[yY]co\[([0-9]+)\]/){ "" }
end


str[i].gsub!(/\\[Ff]\[(.+?)\]/)do
@face_file = $1.to_s + ".png"
# @x = @face_indent = 128
if FileTest.exist?("Graphics/Pictures/" + $1.to_s + ".png")

self.contents.blt(@x, @y, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
end
# @str[i].gsub!(/\\[Ff]\[(.*?)\]/) { "" }
#end
#end
end
str[i].gsub(/\\[Tt]\[(.*?)\]/) do
font = $1.to_s
self.contents.font.name = font
str[i].sub!(/\\[Tt]\[(.*?)\]/) { "" }
end



str[i].gsub!(/\[[Tt]\]/) { " " }
str[i].gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }






str[i].gsub!(/\\[Nn]\[([0-9]+)\]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end
if k_lines > 1
if $game_switches[k_switch]
set_text(y,str[i],color)
y+=pace
end
k_lines -=1
elsif str[i].index("/")==0
if str[i].index(/[0-9]/)==1
str[i].sub!(/([0-9]+)/, "")
k_lines = $1.to_i
end
str[i].sub!(/\[([0-9]+)\]/, "")
str[i].slice!(0)
switch = $1.to_i
k_switch = switch if k_lines > 0
if $game_switches[switch]
set_text(y,str[i],color)
y+=pace
end
else
set_text(y,str[i],color)
y+=pace
end
end
file.close
if @page % 2 == 1
self.contents.font.color = Color.new(0,0,0)
self.contents.draw_text(0,320+32, self.width-32, 32, @page.to_s,2)
else
self.contents.font.color = Color.new(0,0,0)
self.contents.draw_text(0,320+32, self.width-32, 32, @page.to_s)
end
end

def set_text(y,text,color)
if color == 8
self.contents.font.color = Color.new(0,0,0)
else
self.contents.font.color = text_color(color)
end

x = 0
while ((c = text.slice!(/./)) != nil)#/./m
if c == 97
p "ciao"
end

self.contents.draw_text(4 + x, y, 40, 32, c)
x += self.contents.text_size©.width
end
end
end

# ---------------------------------
# Game_Temp class
# ---------------------------------
class Game_Temp
attr_accessor :diary_current_page
alias sylaer_diary_temp_initialize initialize
def initialize
@diary_current_page = 1
sylaer_diary_temp_initialize
end
end
# ---------------------------------
# Scene_Diary class
# ---------------------------------
class Scene_Diary
def initialize(no_menu_call = false)
@no_menu_call = no_menu_call
@current_page = $game_temp.diary_current_page
end
def main
create_arrow
@pages = []
@pages[0] = Window_DiaryPage.new(@current_page)
if @current_page + 1 > NUM_DIARY_PAGES
@pages[1] = Window_DiaryPage.new(0)
else
@pages[1] = Window_DiaryPage.new(@current_page + 1)
end
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@pages[0].dispose
@pages[1].dispose
@left_arrow.dispose
@right_arrow.dispose
@back_drop.dispose
end

def create_arrow
viewport = Viewport.new(0, 0, 640, 480)
viewport.z = 3000
@left_arrow = Little_Arrow.new(viewport)
@left_arrow.x = 64
@left_arrow.y = 424
@left_arrow.visible = false
@right_arrow = Little_Arrow.new(viewport,true)
@right_arrow.x = 640 - 100
@right_arrow.y = 424
@right_arrow.visible = false
back_drop_viewport = Viewport.new(0, 0, 640, 480)
back_drop_viewport.z = 1
@back_drop = Sprite.new(back_drop_viewport)
@back_drop.bitmap = RPG::Cache.picture("Backdrop")
end


def update




$game_temp.diary_current_page = @current_page
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
if @no_menu_call == false
$scene = Scene_Menu.new(6)
else
$scene = Scene_Map.new
end
end
if @current_page + 1 < NUM_DIARY_PAGES
if Input.trigger?(Input::RIGHT)
Audio.se_play("Audio/SE/046-Book01")
@current_page += 2
@pages[0].dispose
@pages[1].dispose
@pages[0] = Window_DiaryPage.new(@current_page)
if @current_page + 1 > NUM_DIARY_PAGES
@pages[1] = Window_DiaryPage.new(0)
else
@pages[1] = Window_DiaryPage.new(@current_page + 1)
end
end
@right_arrow.visible = true
else
@right_arrow.visible = false
end
if @current_page > 1
if Input.trigger?(Input::LEFT)
Audio.se_play("Audio/SE/046-Book01")
@current_page -= 2
@pages[0].dispose
@pages[1].dispose
@pages[0] = Window_DiaryPage.new(@current_page)
@pages[1] = Window_DiaryPage.new(@current_page + 1)
end
@left_arrow.visible = true
else
@left_arrow.visible = false
end
end
end

 



Bugs e Conflitti Noti

 

N/A

Altri Dettagli

 

N/A

Edited by Dilos
Applicato tag code.

 

 

http://files.nireblog.com/blogs4/narutozorro9kolas/files/firma-naruto-y-yondaime.gif

 

 

Link to comment
Share on other sites

  • 2 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...