11-10-2012, 10:06 PM
(Questo messaggio è stato modificato l'ultima volta il: 11-10-2012, 11:03 PM da Johnny 97.)
DESCRIZIONE:
Questo script aggiunge una voce al menù, per accedere ad una schermata dove verrà mostrata la missione in corso, impostata interamente da voi.
E' uno script molto semplice strutturalmente, cioè, potrete scrivere una missione alla volta. Diciamo chè è più una schermata per far ricordare al giocatore cosa deve fare, nel caso in cui dovesse riprendere il gioco dopo un po' di tempo, oppure nel caso in cui ci sia una lista lunga di cose da fare.
AUTORE/I:
Interamente Johnny 97 (Io u.u)
SCREENSHOTS:
[spoiler][/spoiler]
ISTRUZIONI:
Come avrete potuto notare dallo screen, la finestra della missione è strutturata in 3 sezioni:
-Obiettivo Attuale: Diciamo che questo è il titolo della missione;
-Descrizione Obiettivo: Ci sono 5 righe a disposizione per descrivere l'obiettivo da raggiungere per completare la missione.
-Ricompense: Ci sono 4 righe a disposizione per elencare le ricompense.
Potrete strutturare come volete la descrizione e le ricompense (ad esempio scrivere una ricompensa per ogni riga, come se fosse una lista).
Per scrivere nelle varie righe, dovrete utilizzare il Call Script in qualsiasi momento vogliate! Ecco i vari codici per scrivere nella finestra:
Inoltre fra i 5 script ci sarà anche uno script per personalizzare un po' la grafica della finestra... Niente di chè, se volete spostare le righe o cambiare le scritte "Obiettivo Attuale", "Descrizione Obiettivo" e "Ricompense" vi basterà seguire le istruzioni dentro quello script.
SCRIPT:
Allooooooora, gli script sono 5, e dovrete metterli in posti diversi dentro lo script editor per evitare incompatibilità e problemi vari.
Chiamate questo primo script Quest e mettetelo sotto la categoria Modules (La prima categoria per intenderci meglio.)
NB: Questo è lo script per le impostazioni di cui vi ho parlato sopra.
[SPOILER]
[/SPOILER]
Il prossimo script è una modifica che ho dovuto apportare alla finestra del menù classico, quindi SOSTITUITE questo script allo script Window_MenuCommand (Non cancellate lo script dalla lista degli script, ma sostituite il codice.)
[spoiler][/spoiler]
Passiamo al terzo script, dovrete fare come avete fatto con quello di sopra, ma questa volta dovrete sostituire un altro script, lo script Scene_Menu.
[spoiler][/spoiler]
Il quarto script dovrete aggiungerlo sotto a tutti gli script della categoria Window, chiamandolo Window_Quest.
[spoiler][/spoiler]
Il quinto ed ultimo script, dovrete metterlo sotto tutti gli script della categoria Scene, e dovrete chiamarlo Scene_Quest.
[spoiler][/spoiler]
BUG E CONFLITTI NOTI:
Compatibile soltanto con RPG Maker VX Ace.
Oh, quasi dimenticavo: Ovviamente lo script non funzionerà se modificherete il menù di base. Per il corretto funzionamento dello script è necessario che gli script Window_MenuCommand e Scene_Menu non vengano modificati dopo averli sostituiti con i miei script.
AGGIORNAMENTI:
L'attuale versione è la versione 1.0, in futuro probabilmente farò alcuni aggiornamenti. E' quindi importante lasciare agli script i nomi che vi ho detto di dare, così se io dovessi applicare qualche importante cambiamento, non avrete difficoltà a distinguere i vari script!
AGIORNAMENTO 11/10/2012: Dopo circa un'ora dal rilascio del mio script, ho l'esigenza di aggiornare alla versione 1.1
Nessun cambio che può portare problemi: Ho aggiunto 3 righe nella descrizione e le corrispondenti variabili per impostare i testi dal Call Script. Aggiornamenti più importanti avverranno in seguito.
Questo script aggiunge una voce al menù, per accedere ad una schermata dove verrà mostrata la missione in corso, impostata interamente da voi.
E' uno script molto semplice strutturalmente, cioè, potrete scrivere una missione alla volta. Diciamo chè è più una schermata per far ricordare al giocatore cosa deve fare, nel caso in cui dovesse riprendere il gioco dopo un po' di tempo, oppure nel caso in cui ci sia una lista lunga di cose da fare.
AUTORE/I:
Interamente Johnny 97 (Io u.u)
SCREENSHOTS:
[spoiler][/spoiler]
ISTRUZIONI:
Come avrete potuto notare dallo screen, la finestra della missione è strutturata in 3 sezioni:
-Obiettivo Attuale: Diciamo che questo è il titolo della missione;
-Descrizione Obiettivo: Ci sono 5 righe a disposizione per descrivere l'obiettivo da raggiungere per completare la missione.
-Ricompense: Ci sono 4 righe a disposizione per elencare le ricompense.
Potrete strutturare come volete la descrizione e le ricompense (ad esempio scrivere una ricompensa per ogni riga, come se fosse una lista).
Per scrivere nelle varie righe, dovrete utilizzare il Call Script in qualsiasi momento vogliate! Ecco i vari codici per scrivere nella finestra:
Codice:
$questname = "Scrivete qui quel che volete che compaia accanto a Obiettivo Attuale."
$questdescription1 = "Scrivete qui quel che volete che compaia nella riga 1 della Descrizione dell'Obiettivo"
$questdescription2 = "Scrivete qui quel che volete che compaia nella riga 2 della Descrizione dell'Obiettivo"
$questdescription3 = "Scrivete qui quel che volete che compaia nella riga 3 della Descrizione dell'Obiettivo"
$questdescription4 = "Scrivete qui quel che volete che compaia nella riga 4 della Descrizione dell'Obiettivo"
$questdescription5 = "Scrivete qui quel che volete che compaia nella riga 5 della Descrizione dell'Obiettivo"
$questdescription6 = "Scrivete qui quel che volete che compaia nella riga 6 della Descrizione dell'Obiettivo"
$questdescription7 = "Scrivete qui quel che volete che compaia nella riga 7 della Descrizione dell'Obiettivo"
$questdescription8 = "Scrivete qui quel che volete che compaia nella riga 8 della Descrizione dell'Obiettivo"
$questreward1 = "Scrivete qui quel che volete che compaia nella riga 1 delle Ricompense"
$questreward2 = "Scrivete qui quel che volete che compaia nella riga 2 delle Ricompense"
$questreward3 = "Scrivete qui quel che volete che compaia nella riga 3 delle Ricompense"
$questreward4 = "Scrivete qui quel che volete che compaia nella riga 4 delle Ricompense"
Inoltre fra i 5 script ci sarà anche uno script per personalizzare un po' la grafica della finestra... Niente di chè, se volete spostare le righe o cambiare le scritte "Obiettivo Attuale", "Descrizione Obiettivo" e "Ricompense" vi basterà seguire le istruzioni dentro quello script.
SCRIPT:
Allooooooora, gli script sono 5, e dovrete metterli in posti diversi dentro lo script editor per evitare incompatibilità e problemi vari.
Chiamate questo primo script Quest e mettetelo sotto la categoria Modules (La prima categoria per intenderci meglio.)
NB: Questo è lo script per le impostazioni di cui vi ho parlato sopra.
[SPOILER]
Codice:
#==============================================================================
# ** Impostazioni Johnny 97's Quest System v1.1
#------------------------------------------------------------------------------
# In questo modulo sono contenute variabili che potrete modificare a vostro
# piacimento per personalizzare lo script.
#==============================================================================
module Johnny
#==============================================================================
# ** Stringhe
#------------------------------------------------------------------------------
# Modificate soltanto la parte dentro "".
#==============================================================================
#Voce del menù
Obiettivi = "Obiettivi"
#Obiettivo Attuale
Attuale = "Obiettivo Attuale"
#Descrizione Obiettivo
Descrizione = "Descrizione Obiettivo"
#Ricompense
Ricompense = "Ricompense"
end
class QuestSettings
#==============================================================================
# ** Variabili
#------------------------------------------------------------------------------
# Impostate le variabili con numeri differenti per avere allineamenti di testo
# differenti.
# 0 = Allineato a Sinistra
# 1 = Allineato al Centro
# 2 = Allineato a Destra
#==============================================================================
#Righe Descrizione Obiettivo
$AllDescr = 0
#Righe Ricompense
$AllRicom = 0
end
Il prossimo script è una modifica che ho dovuto apportare alla finestra del menù classico, quindi SOSTITUITE questo script allo script Window_MenuCommand (Non cancellate lo script dalla lista degli script, ma sostituite il codice.)
[spoiler]
Codice:
#==============================================================================
# ** Window_MenuCommand ADAPTED
#------------------------------------------------------------------------------
# Window_MenuCommand adattato per il Johnny 97's Quest System
#==============================================================================
class Window_MenuCommand < Window_Command
#--------------------------------------------------------------------------
# * Initialize Command Selection Position (Class Method)
#--------------------------------------------------------------------------
def self.init_command_position
@@last_command_symbol = nil
end
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0)
select_last
end
#--------------------------------------------------------------------------
# * Get Window Width
#--------------------------------------------------------------------------
def window_width
return 160
end
#--------------------------------------------------------------------------
# * Get Number of Lines to Show
#--------------------------------------------------------------------------
def visible_line_number
item_max
end
#--------------------------------------------------------------------------
# * Create Command List
#--------------------------------------------------------------------------
def make_command_list
add_main_commands
add_formation_command
add_original_commands
add_save_command
add_game_end_command
end
#--------------------------------------------------------------------------
# * Add Main Commands to List
#--------------------------------------------------------------------------
def add_main_commands
add_command(Vocab::item, :item, main_commands_enabled)
add_command(Vocab::skill, :skill, main_commands_enabled)
add_command(Vocab::equip, :equip, main_commands_enabled)
add_command(Vocab::status, :status, main_commands_enabled)
add_command(Johnny::Obiettivi, :quest, main_commands_enabled)
end
#--------------------------------------------------------------------------
# * Add Formation to Command List
#--------------------------------------------------------------------------
def add_formation_command
add_command(Vocab::formation, :formation, formation_enabled)
end
#--------------------------------------------------------------------------
# * For Adding Original Commands
#--------------------------------------------------------------------------
def add_original_commands
end
#--------------------------------------------------------------------------
# * Add Save to Command List
#--------------------------------------------------------------------------
def add_save_command
add_command(Vocab::save, :save, save_enabled)
end
#--------------------------------------------------------------------------
# * Add Exit Game to Command List
#--------------------------------------------------------------------------
def add_game_end_command
add_command(Vocab::game_end, :game_end)
end
#--------------------------------------------------------------------------
# * Get Activation State of Main Commands
#--------------------------------------------------------------------------
def main_commands_enabled
$game_party.exists
end
#--------------------------------------------------------------------------
# * Get Activation State of Formation
#--------------------------------------------------------------------------
def formation_enabled
$game_party.members.size >= 2 && !$game_system.formation_disabled
end
#--------------------------------------------------------------------------
# * Get Activation State of Save
#--------------------------------------------------------------------------
def save_enabled
!$game_system.save_disabled
end
#--------------------------------------------------------------------------
# * Processing When OK Button Is Pressed
#--------------------------------------------------------------------------
def process_ok
@@last_command_symbol = current_symbol
super
end
#--------------------------------------------------------------------------
# * Restore Previous Selection Position
#--------------------------------------------------------------------------
def select_last
select_symbol(@@last_command_symbol)
end
end
Passiamo al terzo script, dovrete fare come avete fatto con quello di sopra, ma questa volta dovrete sostituire un altro script, lo script Scene_Menu.
[spoiler]
Codice:
#==============================================================================
# ** Scene_Menu ADAPTED
#------------------------------------------------------------------------------
# Menù originale adattato per il Johnny 97's Quest System
#==============================================================================
class Scene_Menu < Scene_MenuBase
#--------------------------------------------------------------------------
# * Start Processing
#--------------------------------------------------------------------------
def start
super
create_command_window
create_gold_window
create_status_window
end
#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
@command_window = Window_MenuCommand.new
@command_window.set_handler(:item, method(:command_item))
@command_window.set_handler(:skill, method(:command_personal))
@command_window.set_handler(:equip, method(:command_personal))
@command_window.set_handler(:status, method(:command_personal))
@command_window.set_handler(:quest, method(:command_quest))
@command_window.set_handler(:formation, method(:command_formation))
@command_window.set_handler(:save, method(:command_save))
@command_window.set_handler(:game_end, method(:command_game_end))
@command_window.set_handler(:cancel, method(:return_scene))
end
#--------------------------------------------------------------------------
# * Create Gold Window
#--------------------------------------------------------------------------
def create_gold_window
@gold_window = Window_Gold.new
@gold_window.x = 0
@gold_window.y = Graphics.height - @gold_window.height
end
#--------------------------------------------------------------------------
# * Create Status Window
#--------------------------------------------------------------------------
def create_status_window
@status_window = Window_MenuStatus.new(@command_window.width, 0)
end
#--------------------------------------------------------------------------
# * [Item] Command
#--------------------------------------------------------------------------
def command_item
SceneManager.call(Scene_Item)
end
#--------------------------------------------------------------------------
# * [Skill], [Equipment] and [Status] Commands
#--------------------------------------------------------------------------
def command_personal
@status_window.select_last
@status_window.activate
@status_window.set_handler(:ok, method(:on_personal_ok))
@status_window.set_handler(:cancel, method(:on_personal_cancel))
end
#--------------------------------------------------------------------------
# * [Formation] Command
#--------------------------------------------------------------------------
def command_formation
@status_window.select_last
@status_window.activate
@status_window.set_handler(:ok, method(:on_formation_ok))
@status_window.set_handler(:cancel, method(:on_formation_cancel))
end
#--------------------------------------------------------------------------
# * [Save] Command
#--------------------------------------------------------------------------
def command_save
SceneManager.call(Scene_Save)
end
#--------------------------------------------------------------------------
# * [Exit Game] Command
#--------------------------------------------------------------------------
def command_game_end
SceneManager.call(Scene_End)
end
#--------------------------------------------------------------------------
# * [OK] Personal Command
#--------------------------------------------------------------------------
def on_personal_ok
case @command_window.current_symbol
when :skill
SceneManager.call(Scene_Skill)
when :equip
SceneManager.call(Scene_Equip)
when :status
SceneManager.call(Scene_Status)
end
end
#--------------------------------------------------------------------------
# * [Cancel] Personal Command
#--------------------------------------------------------------------------
def on_personal_cancel
@status_window.unselect
@command_window.activate
end
#--------------------------------------------------------------------------
# * Formation [OK]
#--------------------------------------------------------------------------
def on_formation_ok
if @status_window.pending_index >= 0
$game_party.swap_order(@status_window.index,
@status_window.pending_index)
@status_window.pending_index = -1
@status_window.redraw_item(@status_window.index)
else
@status_window.pending_index = @status_window.index
end
@status_window.activate
end
#--------------------------------------------------------------------------
# * Formation [Cancel]
#--------------------------------------------------------------------------
def on_formation_cancel
if @status_window.pending_index >= 0
@status_window.pending_index = -1
@status_window.activate
else
@status_window.unselect
@command_window.activate
end
end
#--------------------------------------------------------------------------
# * [Quest] Command
#--------------------------------------------------------------------------
def command_quest
SceneManager.call(Scene_Quest)
end
end
Il quarto script dovrete aggiungerlo sotto a tutti gli script della categoria Window, chiamandolo Window_Quest.
[spoiler]
Codice:
#==============================================================================
# ** Window_Quest
#------------------------------------------------------------------------------
# Johnny 97's Quest System v1.1
#==============================================================================
class Window_Quest < Window_Selectable
def initialize
super(0, 0, Graphics.width, Graphics.height)
self.contents = Bitmap.new( width - 32, height - 32)
self.opacity = 255
refresh
activate
end
def refresh
self.contents.clear
self.contents.draw_text(5, 5, 175, fitting_height(1), Johnny::Attuale + ":", 0)
self.contents.draw_text(170, 5, width - 64, fitting_height(1), $questname, 0)
self.contents.draw_text(5, 60, width - 64, fitting_height(1), Johnny::Descrizione + ":", 0)
self.contents.draw_text(5, 80, width - 64, fitting_height(1), $questdescription1, $AllDescr)
self.contents.draw_text(5, 100, width - 64, fitting_height(1), $questdescription2, $AllDescr)
self.contents.draw_text(5, 120, width - 64, fitting_height(1), $questdescription3, $AllDescr)
self.contents.draw_text(5, 140, width - 64, fitting_height(1), $questdescription4, $AllDescr)
self.contents.draw_text(5, 160, width - 64, fitting_height(1), $questdescription5, $AllDescr)
self.contents.draw_text(5, 180, width - 64, fitting_height(1), $questdescription6, $AllDescr)
self.contents.draw_text(5, 200, width - 64, fitting_height(1), $questdescription7, $AllDescr)
self.contents.draw_text(5, 220, width - 64, fitting_height(1), $questdescription8, $AllDescr)
self.contents.draw_text(5, 260, width - 64, fitting_height(1), Johnny::Ricompense + ":", 0)
self.contents.draw_text(5, 280, width - 64, fitting_height(1), $questreward1, $AllRicom)
self.contents.draw_text(5, 300, width - 64, fitting_height(1), $questreward2, $AllRicom)
self.contents.draw_text(5, 320, width - 64, fitting_height(1), $questreward3, $AllRicom)
self.contents.draw_text(5, 340, width - 64, fitting_height(1), $questreward4, $AllRicom)
end
end
Il quinto ed ultimo script, dovrete metterlo sotto tutti gli script della categoria Scene, e dovrete chiamarlo Scene_Quest.
[spoiler]
Codice:
#==============================================================================
# ** Scene_Quest
#------------------------------------------------------------------------------
# Johnny 97's Quest System v1.1
#==============================================================================
class Scene_Quest < Scene_MenuBase
#--------------------------------------------------------------------------
# * Start Processing
#--------------------------------------------------------------------------
def start
super
@quest_window = Window_Quest.new
@quest_window.set_handler(:cancel, method(:return_scene))
end
end
BUG E CONFLITTI NOTI:
Compatibile soltanto con RPG Maker VX Ace.
Oh, quasi dimenticavo: Ovviamente lo script non funzionerà se modificherete il menù di base. Per il corretto funzionamento dello script è necessario che gli script Window_MenuCommand e Scene_Menu non vengano modificati dopo averli sostituiti con i miei script.
AGGIORNAMENTI:
L'attuale versione è la versione 1.0, in futuro probabilmente farò alcuni aggiornamenti. E' quindi importante lasciare agli script i nomi che vi ho detto di dare, così se io dovessi applicare qualche importante cambiamento, non avrete difficoltà a distinguere i vari script!
AGIORNAMENTO 11/10/2012: Dopo circa un'ora dal rilascio del mio script, ho l'esigenza di aggiornare alla versione 1.1
Nessun cambio che può portare problemi: Ho aggiunto 3 righe nella descrizione e le corrispondenti variabili per impostare i testi dal Call Script. Aggiornamenti più importanti avverranno in seguito.