-
Posts
149 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Posts posted by LastChaos
-
-
è stato difficile trovare un titolo adatto!
Praticamente sto facendo in modo che quando un eroe del gruppo muore (non l'eroe principale, ma i suoi compagni), esso sparisce da dietro l'eroe mentre si cammina in mappa (i morti non camminano) ù.ù. Finchè ci sono due eroi nel gruppo, la questione è facile, perchè rimane solo l'eroe principale.
Ma se avessi 3+ eroi nel gruppo, ciò diventerebbe impossibile. (Scontato dire che neanche tramite evento e aggiungendo o rimuovendo membri del gruppo la cosa si risolva; cioè, il compagno sparirà dalla coda, ma ovviamente sparisce anche dal gruppo e non combatterà più! ù.ù).
Esiste uno script che possa servire al mio scopo? Non so proprio come cercarlo... sempre se esiste xD
(altrimenti me la cavo semplicemente facendo tornare il PG morto da 0 a 1 PV e così continua a camminarmi dietro XD)
Grazie in anticipo! :D
-
Al mio gioco sto dedicando un canale youtube (dove tratto tutorial base e avanzati su RPGMaker), una pagina FB e altra roba. Cerca di trovare visibilità in questa maniera. SPAM SPAM SPAM!
-
Le carte da giocare le hai, tutte noi le abbiamo!
Io ad esempio prendo molto sul serio il mio progetto e sto scrivendo persino la sceneggiatura! Poi la notte (non so perchè) ma è il momento migliore per sognare come far avanzare la storia, e ti escono decine di idee, che, o ti segni subito, o cerchi di ricordartele al mattino successivo e te le scrivi! XD
Non buttare nulla di quello che ti viene in mente, fai una specie di Brainstorming da solo e quello che pensi, te lo segni! ;)Poi cerchi di vedere se si integra con il gioco o meno.
Vedrai che poi le idee che ti usciranno, ti faranno scegliere fra mille vie in cui continuare il gioco! XD
Non demordere! ( io sul mio progetto ci lavoro da piu di un anno... :O )
-
Aaaaallora, ho scaricato la demo e l'ho provata!
Di certo non scriverò tutti i bug che ho trovato perchè non me li sono segnati e probabilmente me ne scorderò qualcuno! XD1)Parecchi errori nei messaggi (E maiuscole accentate con l'apostrofo, frasi che finiscono senza il punto, parole che non dovrebbe avere l'accento finale, scritte a volte tagliate [ti consiglio di usare questo script]
#========================================================================
# ** Word Wrapping Message Boxes, by: KilloZapit
#------------------------------------------------------------------------
# Changes message boxes so it will automatically wrap long lines.
#
# Note: I consider this script to be public domain, and put no
# restrictions on it's use whatsoever. My only request is that
# a link back to the script is provided so more people can
# access it if they want to.
#
# Version the Second:
# Now strips color codes and icon codes so they don't break words.
# Also calculates icon width along with text width for words.
# Version the Third:
# Now also strips delays and other timing related codes.
# Splits for non-icon control codes before counting icons.
# Control codes can now break lines in case of font changes.
# Added some comments to clarify some code.
# Version the Forth:
# Fixed a small bug that might cause a error when counting icons.
# Added a small notice for copyright questions.
# Version the Fifth:
# Added "collapse" mode, which elimanates extra spaces.
# Can now use "whitespace" mode outside of wordwrap mode if needed.
# Version the Sixth:
# Fixed problems with collapsed whitespace not wraping words right.
# Version the Seventh:
# Added option to add a margin to the right hand side of the window.
#------------------------------------------------------------------------
# Also adds the following new escape sequences:
#
# \ww - Word Wrap: turns word wrap on if it's off
# \nw - No Wrap: Turns word wrap off
# \ws - WhiteSpace mode: Converts newlines to spaces (like HTML)
# \nl - New Line: Preserves hard returns
# \cs - Collapse whiteSpace: Eliminates extra spaces (also like HTML)
# \pre - PRE-formatted: Preserves spaces
# \br - line BRake: manual newline for whitespace mode
# \rm - Right Margin: extra space on the right side of the window
#========================================================================
# Standard config module.
module KZIsAwesome
module WordWrap
# change this if you don't want wordwrap on by default.
DEFAULT_WORDWRAP = true
# change this if you want white space mode on by default.
DEFAULT_WHITESPACE = false
# change this if you want white space mode on by default.
DEFAULT_COLLAPSE = true
# change this to add a right margin to the window.
DEFAULT_RIGHT_MARGIN = 0
end
end
class Window_Base < Window
include KZIsAwesome::WordWrap
alias_method :initialize_kz_window_base, :initialize
def initialize(x, y, width, height)
initialize_kz_window_base(x, y, width, height)
@wordwrap = DEFAULT_WORDWRAP
@convert_newlines = DEFAULT_WHITESPACE
@collapse_whitespace = DEFAULT_COLLAPSE
@right_margin = DEFAULT_RIGHT_MARGIN
@lastc = "\n"
end
alias_method :process_character_kz_window_base, :process_character
def process_character(c, text, pos)
c = ' ' if @convert_newlines && c == "\n"
if @wordwrap && c =~ /[ \t]/
c = '' if @collapse_whitespace && @lastc =~ /[\s\n\f]/
if pos[:x] + get_next_word_size(c, text) > contents.width - @right_margin
process_new_line(text, pos)
else
process_normal_character(c, pos)
end
@lastc = c
else
@lastc = c
process_character_kz_window_base(c, text, pos)
end
end
def get_next_word_size(c, text)
# Split text by the next space/line/page and grab the first split
nextword = text.split(/[\s\n\f]/, 2)[0]
if nextword
icons = 0
if nextword =~ /\e/i
# Get rid of color codes and YEA Message system outline colors
nextword = nextword.split(/\e[oOcC]+\[\d*\]/).join
# Get rid of message timing control codes
nextword = nextword.split(/\e[\.\|\^<>!]/).join
# Split text by the first non-icon escape code
# (the hH is for compatibility with the Icon Hues script)
nextword = nextword.split(/\e[^iIhH]+/, 2)[0]
# Erase and count icons in remaining text
nextword.gsub!(/\e[iIhH]+\[[\d,]*\]/) do
icons += 1
''
end if nextword
end
wordsize = (nextword ? text_size(c + nextword).width : text_size( c ).width)
wordsize += icons * 24
else
wordsize = text_size( c ).width
end
return wordsize
end
alias_method :process_escape_character_kz_window_base, :process_escape_character
def process_escape_character(code, text, pos)
case code.upcase
when 'WW'
@wordwrap = true
when 'NW'
@wordwrap = false
when 'WS'
@convert_newlines = true
when 'NL'
@convert_newlines = false
when 'CS'
@collapse_whitespace = true
when 'PRE'
@collapse_whitespace = false
when 'BR'
process_new_line(text, pos)
@lastc = "\n"
when 'RM'
@right_margin = obtain_escape_param(text)
else
process_escape_character_kz_window_base(code, text, pos)
end
# Recalculate the next word size and insert line breaks
# (Needed primarily for font changes)
if pos[:x] + get_next_word_size('', text) > contents.width
process_new_line(text, pos)
end
end
end2) Sempre riguardo i messaggi, ad un certo punto del gioco, quando parto per l'avventura, il font cambia! Non so se è una scelta tua o meno.
3) L'arma Ascia da Battaglia, si chiama "Acia da Battaglia"
4) Mi sembra inutile chiedere ogni volta che devo aprire una porta se voglio uscire o meno.
5)Il tempo per premere i pulsanti dei grimaldelli mi sembra troppo rapido! E se dovessi finire i grimaldelli? Game Over? Sarei bloccato permanentemente nella stanza XD.
6)Non si vedono le porte quando entri nei 3 negozi in città.
7)Mappe grandi e vuote purtroppo. Nel corridoio buttaci qualche pianta o qualcos'altro. Utilizza un tileset specifico per ogni mappa, e rinomini il tileset come il nome della mappa, così non ti impicci e ti organizzi per bene tutto quanto! La città è troppo vuota e la simmetria delle case non mi sembra tanto normale (ma forse solo io la penso cosi')
8)Al posto di "MigliorEquip" metterei un bell'"Ottimizza"
9) al di fuori della città l'ambiente è vuotissimo.10) Fai fare il passaggio giorno-->notte mentre lo schermo è oscurato, almeno non si vede di scatto come c'è nella demo.
11)Anchio utilizzo il battle system di MOG (+ decine di script suoi). In battaglia stai attento a come si muovono i personaggi quando fanno un determinato attacco o stano fermi, e controlla le pictures (e lo script MOG_Battler_Motion)
12)Io metterei una musichetta anche nel corridoio e nella città.
La trama inizialmente mi sembra (e sicuramente da cui avrai preso spunto) simile a quella di Hunger Games! hahahah
Comunque lavoraci sulla trama e cerca di tirare fuori belle cose con queste 5 divinità!Lavora MOLTO sulle mappe! ;)
Ottimo l'easter egg del libro "The Lord Of The Rings" ! XD
See you in the next Demo! :D
-
Quando utilizzi uno Script creato da un autore, all'interno ci potrebbero essere delle funzioni che possono essere attivate in gioco tramite Call Script!
Nel caso di uno script per il teletrasporto, l'autore può scrivere ad esempio:
-> Per aprire il menù del teletrasporto, puoi utilizzare questo Call script: $Scene_call_teleport
a questo punto quando inserisci un nuovo evento, vai nella terza pagina e in basso a destra c'è un pulsante (Script...)
Clicca, ed inserisci $Scene_call_teleport come scritto dall'autore.
a questo punto, mentre provi il gioco, attivando l'evento si aprirà il menù per il teletrasporto.
-
Invece del Basic game Time, ti consiglio l'Advanced Game Time, che è sempre dello stesso autore! Ti da accesso a molte più funzionalità!
-
Ho utilizzato prima google e poi il Search avanzato nel forum ma non trovato nulla, quindi...
Sei il più bello per questo ;____ ;
Non sono il più bello, volevo solo evitare di fare un doppio post nel caso in cui un altro avesse postato tempo fa il mio stesso dubbio! XD
Comunque anche portando video in nuovi progetti, mi da lo stesso errore.
Strana e fastidiosa sta situazione ._. ... dovrò farmela piacere a forza. :(
-
Ho utilizzato prima google e poi il Search avanzato nel forum ma non trovato nulla, quindi...
avete presente quel fastidioso bug che quando mandate in play un video nel gioco, non appena questo finisce, si sente un mezzo secondo di audio preso a caso da una parte del video?
Succede solo a me o anche a qualcun altro?
Siete riusciti a risolvere in qualche maniera?
-
Dovrei puntare quindi sulla donazione.
Faccio un'ipotesi:
Io vorrei in ogni caso mettere aree segrete e/o oggetti extra, accessibili solo tramite un input numerico in un evento.
Ci sará in gioco (o fuori) il modo di farmi delle donazioni libere tramite paypal; a questo punto, a chi mi fa delle donazioni invio via mail un codice per sbloccare casualmente una delle aree segrete del gioco o un arma, armatura extra.
In un altro caso, il giocatore che mi ha fatto la donazione potrebbe chiedermi via e mail di sbloccare un determinata area segreta e/o oggetto.
Mi sembra che questa ipotesi non violi la commerciabilitá del gioco.
Sono solo io che regalo cose extra in caso di donazioni LIBERE da parte delle utenze. -
potresti farlo uscire come kickstarter e a chi dona un tot gli mandi i codici aggiuntivi xDCon un progetto Crowdfounding, darei i codici aggiuntivi a chi dona (e copie del gioco!) e con i soldi che chiedo per mettere in atto il progetto ci pago gli Scripter! XD
-
Mi sa l'unica cosa che salva è un sito generale con un pulsante donazione e che non tratta del gioco in particolare, ma contiene il download del gioco e di altri giochi? Tipo come donazione per il mio lavoro in generale...
Penso sia la soluzione più corretta...Spammare nei miei siti o affini il pulsante donazione! hahaha
-
ma se infondo infondo sbloccare queste aree non è strettamente necessario all'andamento della storia, chi ti costringe ad acquistarle se non la tua curiositàEsattamente, non farebbero parte della storia. Solo la curiosità potrebbe spingere il giocatore ad acquistarla.
EDIT: mentre scrivevo il post, avete risposto in due (guardian e midi) ai dubbi che mi stavo ponendo! hahahaha grazie delle risposte!
Per quanto riguarda il Freemium, ho letto i vari modelli:
Il gioco non rientra in quei 4 modelli in quanto la storia procede regolarmente senza limitazioni e le cose acquistabili sono extra.
In ogni caso, il mio gioco verrebbe considerato Freemium se implementassi questo metodo?
Gli autori di alcuni Commercial Scripts potrebbero "denunciarmi" questa cosa e richiedere il pagamento per il loro script?
La prima cosa che mi è venuta in mente quando ho pensato a quest'idea è che ovviamente, nel caso dovessi far sbloccare aree segrete, magari in quelle aree (sicuramente) verranno visualizzati anche degli Script Commerciali, e quindi dovrei pagare l'autore dello script poichè lo sto utilizzando in un'area che il giocatore ha pagato? Non so se ho reso l'idea XD
-
Ciao a tutti,
il mio dubbio è semplicissimo:
Il gioco che sto creando è ovviamente Free to Play poichè utilizzo Commercial & Non-commercial Scripts;
Volevo mettere delle aree segrete (o qualsivoglia cosa) nel gioco e farle sbloccare tramite un sistema ad eventi,variabili e password (già ho in testa come voglio farlo funzionare); però per ricevere la password di accesso della variabile, il giocatore deve prima inviarmi un pagamento Paypal sul mio conto, come fosse un acquisto in-game (nella stessa maniera delle App del telefono).
Se dovessi utilizzare questo metodo, il gioco è considerato Commerciale o non commerciale? Potrei farlo?
Il gioco è Free to Play, e sta al giocatore la decisione di accedere o meno alle aree segrete. u.u
Voi cosa ne pensate?
-
Aspetto MOG, ha detto che inserirà anche nuove features! e quando lui inserisce qualcosa di nuovo... beh... fa sempre belle cose! hahahah
-
Ho contattato MOG, e avevo ragione, mi ha detto che si era scordato di aggiungere il file SDK.
Ha detto che nella prossima settimana aggiornerà lo script con nuove features e aggiungerà anche il file Scripts_SDK :D
-
Purtroppo dallo script che c'è nella demo (più di 10000 righe di codice), non puoi personalizzare nulla. Si vede che l'intero script è collegato a tutti i moduli di configurazione... come scritto da mog:
NOTA - Como este é um script para apresentar técnicas de RGSS, não foram adicionados comentários explicativos no modulo de configuraçãoQuindi l'unico problema è trovare sto benedetto file Scripts_SDK.Vorrei veramente tanto poter utilizzare questo menù magnifico! *^* -
Se clicchi sul link che ho messo, mog descrive (in portoghese) la maniera in cui è possibile personalizzare l'intero script. Il fatto è che il file Scripts_SDK non è presente nel download e quindi anche modificando il file "Scripts.rvdata2" nella cartella Data, non succede nulla all'interno dell'editor script.
Dovrebbe venir fuori questo, come descritto da mog, In questo modo è possibile personalizzare lo script! Invece non succede nulla...
http://www.atelier-rgss.com/RGSS/Menu/IMG/ACE_15b.gif
-
Quindi il tuo gioco non contiene messaggi scritti, ma tutti file audio in cui vengono trattati tutti i discorsi, giusto? (anchio avevo in mente di fare una cosa del genere... poi ho lasciato perdere!)
Per ora non penso di aver mai visto uno script riguardo questo problema... e per quanto riguarda farlo ad immagini come ti ho spiegato... beh... ti capisco! Sarebbe luuuungo e palloso! XD
-
Non finirò mai di dire che MogHunter sia lo scripter più figo di rgss3!
Il monogatari system menù è uno STUPENDO script per il menù system, vi rimando alla pagina di Mog:http://www.atelier-rgss.com/RGSS/Menu/ACE_Menu15.html
Scaricatevi la demo in fondo alla pagina per provare di persona quanto sia potente questo script!
Il problema è che Mog spiega in che modo si può personalizzare questo script (ci sono le immagini nel link citato sopra), ma anche seguendo la procedura, non riesco a far apparire tutte le parti dello script mentre sto nell'editor script!
In partenza le immagini dicono che dovrei avere Scripts_SDK nella cartella del gioco, è che dovrei spostarla nella cartella Data e rinominare il fil in Scripts.rvdata2 (l'estensione ce l ha già di suo il file).
Nel download non c'è nessun file Scripts_SDK e anche provando vari procedimenti, non riesco a far apparire tutte le parti dello script!
Qualcuno di voi può provare a seguire il procedimento spiegato da Mog (Banalissimo) e vedere se gli funziona?p.s. Questa demo ha anche uno script meraviglioso per i crediti finali ;)
-
Puoi farlo semplicemente utilizzando delle immagini!
Su photoshop crei un foglio 544x416 pixel e in basso metti le scritte che devi fare (se sono sottotitoli come vuoi te) (ricorda di sbloccare il livello sfondo di photoshop e renderlo trasparente), dopo questo passaggio, salvi l'immagine in PNG e la metti nella cartella Graphics/Pictures del tuo gioco.
Ci sono diversi metodi poi per far apparire le scritte e farle rimaneere su schermo mentre si continua a giocare.
Nell'editor fai apparire le scritte tramite processo parallelo (o su mappa o tramite evento comune), in questo modo il gioco non si ferma, e poi ogniqualvolta ti serve cambiare sottotitolo, elimini l'immagine precedente e fai apparire quella successiva! ;)
-
Utilizza questo script, è di Yanfly :D
#==============================================================================
#
# ▼ Yanfly Engine Ace - Enemy Levels v1.02
# -- Last Updated: 2012.01.26
# -- Level: Normal, Hard
# -- Requires: n/a
#
#==============================================================================
$imported = {} if $imported.nil?
$imported["YEA-EnemyLevels"] = true
#==============================================================================
# ▼ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2012.01.26 - Bug Fixed: Duplication of stat growth rates per enemy.
# 2012.01.24 - Added notetag for enemies.
# - Option to change Party Level function in Action Conditions to
# enemy level requirements.
# 2011.12.30 - Started Script and Finished.
#
#==============================================================================
# ▼ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# RPG's with enemies that level up with the party enforces the player to stay
# on their toes the whole time. This is both a good and bad thing as it can
# cause the player to stay alert, but can also cause the player to meet some
# roadblocks. This script will not only provide enemies the ability to level up
# but also allow the script's user to go around these roadblocks using various
# tags to limit or slow down the rate of growth across all enemies.
#
#==============================================================================
# ▼ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
#
# -----------------------------------------------------------------------------
# Skill Notetags - These notetags go in the skill notebox in the database.
# -----------------------------------------------------------------------------
#
#
# This causes the enemy to raise or drop x levels depending on the tag used.
# The new level will readjust the enemy's stats (including HP and MP).
#
#
# This resets the enemy's level back to the typical range it should be plus or
# minus any level fluctuations it was given. This occurs before enemy level +
# and enemy level - tags.
#
# -----------------------------------------------------------------------------
# Enemy Notetags - These notetags go in the enemies notebox in the database.
# -----------------------------------------------------------------------------
#
# This notetag will hide the level of the enemy. If YEA - Enemy Target Info is
# installed, the level will be revealed upon a parameter scan.
#
#
#
# This will adjust the minimum and maximum levels for the enemy. By default,
# the minimum level is 1 and the maximum level is whatever is set in the module
# as MAX_LEVEL.
#
#
# This will set the enemy's level to exactly x. It a sense, this is just the
# usage of both the min and max level tags together as the same value.
#
#
# Choosing a value from 0 to 4, you can adjust the different leveling rulesets
# for the enemy. See the list below.
# Type 0 - Lowest level of all actors that have joined.
# Type 1 - Lowest level in the battle party.
# Type 2 - Average level of the battle party.
# Type 3 - Highest level of the battle party.
# Type 4 - Highest level of all actors that have joined.
#
#
# This will give the level a random flunctuation in either direction. Set this
# value to 0 if you don't wish to use it. Adjust RANDOM_FLUCTUATION inside the
# module to change the default fluctuation value.
#
#
#
#
#
# This will raise or lower the stat by x or x% per level (depending on the tag
# used). This will override the default growth settings found inside the module
# hash called DEFAULT_GROWTH. You may replace stat with:
# MAXHP, MAXMP, ATK, DEF, MAT, MDF, AGI, LUK, GOLD, EXP
#
#==============================================================================
# ▼ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
#
#==============================================================================
module YEA
module ENEMY_LEVEL
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - General Level Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# These settings adjust the general level setup for your enemies from the
# way levels appear in the game to the default maximum level for enemies,
# to the way their levels are calculated by default, and the random level
# fluctuation they have. If you want enemies to have different settings,
# use notetags to change the respective setting.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# This is how the level text will appear whenever enemy levels are shown.
LEVEL_TEXT = "LV%s %s"
# This is the maximum level your enemies can achieve. They cannot go higher
# no exceptions. Adjust this accordingly to fit your game.
MAX_LEVEL = 99
# Default level calculations for your enemies will be adjusted as such.
# Type 0 - Lowest level of all actors that have joined.
# Type 1 - Lowest level in the battle party.
# Type 2 - Average level of the battle party.
# Type 3 - Highest level of the battle party.
# Type 4 - Highest level of all actors that have joined.
DEFAULT_LEVEL_TYPE = 2
# If you want your enemies to have random +/- levels of some degree, change
# this number to something other than 0. This is the default value.
RANDOM_FLUCTUATION = 2
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Parameter Growth Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Here, you adjust how much stats grow for enemies by default, including
# the formula used to calculate those stats. If you wish for enemies to
# have different growth settings, use notetags to change them.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# These settings adjust the default growth rates (not the base stat formula)
# for each stat. These are the values that will exist for each enemy unless
# defined otherwise by the tags inside their noteboxes.
DEFAULT_GROWTH ={
# ParamID => [:param, per%, +set],
0 => [:maxhp, 0, 0],
1 => [:maxmp, 0, 0],
2 => [ :atk, 0, 0],
3 => [ :def, 0, 0],
4 => [ :mat, 0, 0],
5 => [ :mdf, 0, 0],
6 => [ :agi, 0, 0],
7 => [ :luk, 0, 0],
8 => [ :gold, 0, 0],
9 => [ :exp, 0, 0],
} # Do not remove this.
# The following hash will adjust each of the formulas for each base stat.
# Adjust them as you see fit but only if you know what you're doing.
# base - The base stat from the enemy database.
# per - Growth rate which has not been yet converted to a percent.
# set - Set growth rate. Modified
# Default: "base * (1.00 + (level-1) * per) + (set * (level-1))"
STAT_FORMULA = "base * (1.00 + (level-1) * per) + (set * (level-1))
"
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Party Level to Enemy Level Action Conditions -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Setting the below to true will cause the Party Level requirement under
# Action Conditions in the Action Patterns list to become an Enemy Level
# requirement. The enemy must be at least the level or else it cannot use
# the listed action.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
PARTY_LEVEL_TO_ENEMY_LEVEL = true
end # ENEMY_LEVEL
end # YEA
#==============================================================================
# ▼ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================
module YEA
module REGEXP
module USABLEITEM
LEVEL_CHANGE = /<(?:ENEMY LEVEL|enemy level):[ ]([\+\-]\d+)>/i
LEVEL_RESET = /<(?:ENEMY LEVEL RESET|enemy level reset)>/i
end # USABLEITEM
module ENEMY
LEVEL_TYPE = /<(?:LEVEL_TYPE|level type):[ ](\d+)>/i
LEVEL_MIN = /<(?:MIN_LEVEL|min level|minimum level):[ ](\d+)>/i
LEVEL_MAX = /<(?:MAX_LEVEL|max level|maximum level):[ ](\d+)>/i
LEVEL_SET = /<(?:SET_LEVEL|set level|permanent level):[ ](\d+)>/i
LEVEL_RAND = /<(?:LEVEL_RANDOM|level random):[ ](\d+)>/i
GROWTH_PER = /<(.*):[ ]([\+\-]\d+)([%%])[ ](?:PER_LEVEL|per level)>/i
GROWTH_SET = /<(.*):[ ]([\+\-]\d+)[ ](?:PER_LEVEL|per level)>/i
HIDE_LEVEL = /<(?:HIDE_LEVEL|hide level)>/i
end # ENEMY
end # REGEXP
end # YEA
#==============================================================================
# ■ Numeric
#==============================================================================
class Numeric
#--------------------------------------------------------------------------
# new method: group_digits
#--------------------------------------------------------------------------
unless $imported["YEA-CoreEngine"]
def group; return self.to_s; end
end # $imported["YEA-CoreEngine"]
end # Numeric
#==============================================================================
# ■ DataManager
#==============================================================================
module DataManager
#--------------------------------------------------------------------------
# alias method: load_database
#--------------------------------------------------------------------------
class < def self.load_database
load_database_elv
load_notetags_elv
end
#--------------------------------------------------------------------------
# new method: load_notetags_elv
#--------------------------------------------------------------------------
def self.load_notetags_elv
groups = [$data_enemies, $data_skills, $data_items]
for group in groups
for obj in group
next if obj.nil?
obj.load_notetags_elv
end
end
end
end # DataManager
#==============================================================================
# ■ RPG::UsableItem
#==============================================================================
class RPG::UsableItem < RPG::BaseItem
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :level_change
attr_accessor :level_reset
#--------------------------------------------------------------------------
# common cache: load_notetags_elv
#--------------------------------------------------------------------------
def load_notetags_elv
@level_change = 0
@level_reset = false
#---
self.note.split(/[\r\n]+/).each { |line|
case line
#---
when YEA::REGEXP::USABLEITEM::LEVEL_CHANGE
@level_change = $1.to_i
when YEA::REGEXP::USABLEITEM::LEVEL_RESET
@level_reset = true
end
} # self.note.split
#---
end
end # RPG::UsableItem
#==============================================================================
# ■ RPG::Enemy
#==============================================================================
class RPG::Enemy < RPG::BaseItem
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :hide_level
attr_accessor :level_type
attr_accessor :level_min
attr_accessor :level_max
attr_accessor :level_rand
attr_accessor :level_growth
#--------------------------------------------------------------------------
# common cache: load_notetags_elv
#--------------------------------------------------------------------------
def load_notetags_elv
@hide_level = false
@level_type = YEA::ENEMY_LEVEL::DEFAULT_LEVEL_TYPE
@level_min = 1
@level_max = YEA::ENEMY_LEVEL::MAX_LEVEL
@level_rand = YEA::ENEMY_LEVEL::RANDOM_FLUCTUATION
@level_growth = Marshal.load(Marshal.dump(YEA::ENEMY_LEVEL::DEFAULT_GROWTH))
#---
self.note.split(/[\r\n]+/).each { |line|
case line
#---
when YEA::REGEXP::ENEMY::HIDE_LEVEL
@hide_level = true
when YEA::REGEXP::ENEMY::LEVEL_TYPE
@level_type = $1.to_i
when YEA::REGEXP::ENEMY::LEVEL_MIN
@level_min = [$1.to_i, 1].max
when YEA::REGEXP::ENEMY::LEVEL_MAX
@level_max = [$1.to_i, YEA::ENEMY_LEVEL::MAX_LEVEL].min
when YEA::REGEXP::ENEMY::LEVEL_SET
@level_min = [[$1.to_i, 1].max, YEA::ENEMY_LEVEL::MAX_LEVEL].min
@level_max = [[$1.to_i, 1].max, YEA::ENEMY_LEVEL::MAX_LEVEL].min
when YEA::REGEXP::ENEMY::LEVEL_RAND
@level_rand = $1.to_i
#---
when YEA::REGEXP::ENEMY::GROWTH_PER
case $1.upcase
when "MAXHP", "MHP", "HP"
type = 0
when "MAXMP", "MMP", "MP", "MAXSP", "MSP", "SP"
type = 1
when "ATK", "ATTACK"
type = 2
when "DEF", "DEFENSE"
type = 3
when "MAT", "MAGIC ATTACK", "INT", "INTELLIGENCE", "SPI", "SPIRIT"
type = 4
when "MDF", "MAGIC DEFENSE", "RES", "RESISTANCE"
type = 5
when "AGI", "AGILITY"
type = 6
when "LUK", "LUCK"
type = 7
when "GOLD", "MONEY"
type = 8
when "EXP", "EXPERIENCE", "XP"
type = 9
else; next
end
@level_growth[type][1] = $2.to_i * 0.01
when YEA::REGEXP::ENEMY::GROWTH_SET
case $1.upcase
when "MAXHP", "MHP", "HP"
type = 0
when "MAXMP", "MMP", "MP", "MAXSP", "MSP", "SP"
type = 1
when "ATK", "ATTACK"
type = 2
when "DEF", "DEFENSE"
type = 3
when "MAT", "MAGIC ATTACK", "INT", "INTELLIGENCE", "SPI", "SPIRIT"
type = 4
when "MDF", "MAGIC DEFENSE", "RES", "RESISTANCE"
type = 5
when "AGI", "AGILITY"
type = 6
when "LUK", "LUCK"
type = 7
when "GOLD", "MONEY"
type = 8
when "EXP", "EXPERIENCE", "XP"
type = 9
else; next
end
@level_growth[type][2] = $2.to_i
end
} # self.note.split
#---
end
end # RPG::Enemy
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# alias method: item_user_effect
#--------------------------------------------------------------------------
alias game_battler_item_user_effect_elv item_user_effect
def item_user_effect(user, item)
game_battler_item_user_effect_elv(user, item)
apply_level_changes(item) if self.is_a?(Game_Enemy)
end
end # Game_Battler
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# alias method: initialize
#--------------------------------------------------------------------------
alias game_enemy_initialize_elv initialize
def initialize(index, enemy_id)
game_enemy_initialize_elv(index, enemy_id)
create_init_level
end
#--------------------------------------------------------------------------
# new method: level
#--------------------------------------------------------------------------
def level
create_init_level if @level.nil?
return @level
end
#--------------------------------------------------------------------------
# new method: level=
#--------------------------------------------------------------------------
def level=(value)
create_init_level if @level.nil?
return if @level == value
hp_rate = self.hp.to_f / self.mhp.to_f
mp_rate = self.mp.to_f / [self.mmp, 1].max.to_f
@level = [[value, 1].max, YEA::ENEMY_LEVEL::MAX_LEVEL].min
self.hp = (self.mhp * hp_rate).to_i
self.mp = (self.mmp * mp_rate).to_i
end
#--------------------------------------------------------------------------
# new method: create_init_level
#--------------------------------------------------------------------------
def create_init_level
set_level_type
@hp = mhp
@mp = mmp
end
#--------------------------------------------------------------------------
# new method: set_level_type
#--------------------------------------------------------------------------
def set_level_type
@level = $game_party.match_party_level(enemy.level_type)
@level += rand(enemy.level_rand+1)
@level -= rand(enemy.level_rand+1)
@level = [[@level, enemy.level_max].min, enemy.level_min].max
end
#--------------------------------------------------------------------------
# alias method: transform
#--------------------------------------------------------------------------
alias game_enemy_transform_elv transform
def transform(enemy_id)
game_enemy_transform_elv(enemy_id)
create_init_level
end
#--------------------------------------------------------------------------
# new method: apply_level_changes
#--------------------------------------------------------------------------
def apply_level_changes(item)
create_init_level if item.level_reset
self.level += item.level_change
end
#--------------------------------------------------------------------------
# alias method: param_base
#--------------------------------------------------------------------------
alias game_enemy_param_base_elv param_base
def param_base(param_id)
base = game_enemy_param_base_elv(param_id)
per = enemy.level_growth[param_id][1]
set = enemy.level_growth[param_id][2]
total = eval(YEA::ENEMY_LEVEL::STAT_FORMULA)
return total.to_i
end
#--------------------------------------------------------------------------
# alias method: exp
#--------------------------------------------------------------------------
alias game_enemy_exp_elv exp
def exp
base = game_enemy_exp_elv
per = enemy.level_growth[8][1]
set = enemy.level_growth[8][2]
total = eval(YEA::ENEMY_LEVEL::STAT_FORMULA)
return total.to_i
end
#--------------------------------------------------------------------------
# alias method: gold
#--------------------------------------------------------------------------
alias game_enemy_gold_elv gold
def gold
base = game_enemy_gold_elv
per = enemy.level_growth[9][1]
set = enemy.level_growth[9][2]
total = eval(YEA::ENEMY_LEVEL::STAT_FORMULA)
return total.to_i
end
#--------------------------------------------------------------------------
# alias method: name
#--------------------------------------------------------------------------
alias game_enemy_name_elv name
def name
text = game_enemy_name_elv
if add_level_name?
fmt = YEA::ENEMY_LEVEL::LEVEL_TEXT
text = sprintf(fmt, @level.group, text)
end
return text
end
#--------------------------------------------------------------------------
# new method: add_level_name?
#--------------------------------------------------------------------------
def add_level_name?
if $imported["YEA-EnemyTargetInfo"] && show_info_param?
return true
end
return false if enemy.hide_level
return true
end
#--------------------------------------------------------------------------
# overwrite method: conditions_met_party_level?
#--------------------------------------------------------------------------
if YEA::ENEMY_LEVEL::PARTY_LEVEL_TO_ENEMY_LEVEL
def conditions_met_party_level?(param1, param2)
return @level >= param1
end
end
end # Game_Enemy
#==============================================================================
# ■ Game_Party
#==============================================================================
class Game_Party < Game_Unit
#--------------------------------------------------------------------------
# new method: match_party_level
#--------------------------------------------------------------------------
def match_party_level(level_type)
case level_type
when 0; return all_lowest_level
when 1; return lowest_level
when 2; return average_level
when 3; return highest_level
else; return all_highest_level
end
end
#--------------------------------------------------------------------------
# new method: all_lowest_level
#--------------------------------------------------------------------------
def all_lowest_level
lv = all_members.collect {|actor| actor.level }.min
return lv
end
#--------------------------------------------------------------------------
# new method: lowest_level
#--------------------------------------------------------------------------
def lowest_level
lv = members.collect {|actor| actor.level }.min
return lv
end
#--------------------------------------------------------------------------
# new method: average_level
#--------------------------------------------------------------------------
def average_level
lv = 0
for member in all_members; lv += member.level; end
lv /= all_members.size
return lv
end
#--------------------------------------------------------------------------
# overwrite method: highest_level
#--------------------------------------------------------------------------
def highest_level
lv = members.collect {|actor| actor.level }.max
return lv
end
#--------------------------------------------------------------------------
# all method: all_highest_level
#--------------------------------------------------------------------------
def all_highest_level
lv = all_members.collect {|actor| actor.level }.max
return lv
end
end # Game_Party
#==============================================================================
#
# ▼ End of File
#
#============================================================================== -
Prima di tutto mi scuso per il doppio post.
I problemi sopracitati sono stati risolti in modi totalmente diversi ma ugualmente efficaci.
Ora mi si presenta invece un problema ben più grande.
Lo script Advanced system Time
#Advanced Game Time + Night/Day v1.5.1
#----------#
#Features: Provides a series of functions to set and recall current game time
# as well customizable tints based on current game time to give the
# appearance of night and day in an advanced and customizable way.
#
#Usage: Script calls:
# GameTime.sec? #current second
# GameTime.min? #current minute
# GameTime.hour? #current hour
# GameTime.hour_nom? #current hour (12-hour)
# GameTime.day? #current day of month
# GameTime.day_week? #current day of the week
# GameTime.day_year? #current day of the year
# GameTime.month? #current month
# GameTime.year? #current year
# GameTime.year_post("set") #changes the year post to set
# GameTime.pause_tint(true/false) #pauses/unpauses tint
# GameTime.notime(true/false) #stops time based on true/false
# GameTime.change(s,m,h,d,dw,mn,y) #manually set the time
# seconds,minutes,hours,days,weekday,months,years
# any can be nil to not be changed
# GameTime.set("handle",n) #increases a certain time portion
# valid arguments are:
# addsec,addmin,addhour,addday
# addmonth,addyear
# and:
# remsec,remmin,remhour,remday
# remmonth,remyear
# GameTime.clock?(true/false) #hides/shows the clock
# GameTime.save_time #saves the current time
# GameTime.load_time #loads the saved time
#
# Message Codes:
# GTSEC #Inputs the current second
# GTMIN #Inputs the current minute
# GTHOUR #Inputs the current hour
# GTDAYN #Inputs the day of the month
# GTDAYF #Inputs the day of the week (full)
# GTDAYA #Inputs the day of the week (abbreviated)
# GTMONN #Inputs the month of the year
# GTMONF #Inputs the name of the month (full)
# GTMONA #Inputs the name of the month (abbreviated)
# GTYEAR #Inputs the current year
#
# Map Note Tags: (These go in the note box of Map Properties)
# Notint #These maps will not tint!
# Notime #Stops time from moving in that map
#
#Customization: Set below, in comments.
#
#Examples: GameTime.pause_tint = false
# GameTime.change(nil,30,4,1,1,1,2012)
# GameTime.set("addyear",5)
# GameTime.clock?(true)
#
#----------#
#-- Script by: V.M of D.T
#
#- Questions or comments can be:
# posted on the thread for the script
# given by email: sumptuaryspade@live.ca
# provided on facebook: http://www.facebook.com/DaimoniousTailsGames
# posed on site: daimonioustails.wordpress.com
#
#--- Free to use in any project, commercial or non-commercial, with credit given
# - - Though a donation's always a nice way to say thank you~ (I also accept actual thank you's)
#_# BEGIN_CUSTOMIZATION #_#
#What time a new game starts at: [sec, min, hour, day, month, year]
START_TIME = [0,0,6,0,7,0]
#Wether or not to set time to PC (Real) Time
$USE_REAL_TIME = false
#Time does not increase while the message window is visible:
NOTIMEMESSAGE = true
#Time does not increase unless you are on the map
PAUSE_IN_MENUS = true
#Time does not increase if you are in battle
NOBATTLETIME = true
#Clock is shown
USECLOCK = true
#Set to true to have the clock show up in the menu!
USECLOCK_MENU = false
#Set the format for the clock both in and out of menu
#1. hh:mm am/pm
#2. Sun dd hh:mm am/pm
#3. hh:mm (24 hour clock)
#4. Sun dd hh:mm (24 hour clock)
#5. Custom clock, see below
CLOCK_FORMAT = 5
MENU_CLOCK_FORMAT = 5
#Clock window background opacity
CLOCK_BACK = 0
#Whether to use a special image for the back of the clock or not (Picture folder)
CUSTOM_CLOCK_BACKGROUND = false
#The name of the special image to use
CUSTOM_CLOCK_BACKGROUND_IMAGE = "clock"
#The offset of the image on the x-axis
CUSTOM_CLOCK_BACKGROUND_X = -370
#The offset of the image on the y-axis
CUSTOM_CLOCK_BACKGROUND_Y = -10
#Button to be used to toggle the clock
CLOCK_TOGGLE = :ALT
#X and Y position of clock
CLOCK_X = Graphics.width - 155
CLOCK_Y = Graphics.height - 375 - 24 - 12 #48
#Finetune the width of the clock window here:
CLOCK_WIDTH = 175
#Whether or not those little dots on the clock blink
USE_BLINK = true
#The speed at which they blink
BLINK_SPEED = 60
#Here is where you would insert the array of commands for the custom clock:
CUSTOM_CLOCK = ["day","-","monthlong","-","weeklong",""]
CUSTOM_CLOCK2 = ["hour","blinky","min"," ",""]
#Available commands for CUSTOM_CLOCK:
# "sec" - seconds "min" - minutes
# "hour" - hour (24) "hour12" - hour (12)
# "meri" - AM/PM "day" - day of the month
# "weekshort" - day of the week abbr
# "weeklong" - day of the week long
# "month" - month "monthshort" - month name abbr
# "monthlong" - month name
# "year" - year "yearp" - year post
# "blinky" - those blinky dots
#Using KHAS lighting effects script? Turn this on to use that tint
USE_KHAS = true
#Using Victor Engine Light effects? Turn this on to use that tint
USE_VICTOR = false
#Variables that count down each gametime second/minute
TIMER_VARIABLES = []
#Use Tint in the Battles
BATTLE_TINT = false
#Time it takes for a second (or minute) to pass, in frames by default
#(Frame rate is 60 frames per second)
DEFAULT_TIMELAPSE = 60
#Variable ID containing the current speed of time!
TIMELAPSE_VARIABLE = 207
#Whether to use seconds or not
NOSECONDS = false
#Number of seconds in a minute
SECONDSINMIN = 3
#Number of minutes in an hour
MINUTESINHOUR = 60
#Number of hours in a day
HOURSINDAY = 24
#Names of the days (As little or as many days in the week as you want)
DAYNAMES = ["Domenica","Lunedi","Martedi","Mercoledi","Giovedi","Venerdi","Sabato"]
#Day name abbreviations
DAYNAMESABBR = ["Dom","Lun","Mar","Mer","Gio","Ven","Sab"]
#Number of days in each month (Also represents number of months in a year)
MONTHS = [31,28,31,30,31,30,31,31,30,31,30,31]
#Names of the months
MONTHNAMES = ["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno",
"Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"]
#Abrreviated names of the months
MONTHNAMESABBR = ["Gen","Feb","Mar","Apr","Mag","Giu",
"Lug","Ago","Set","Ott","Nov","Dec"]
#The default letters to be posted before the year in dates
DEFAULT_YEAR_POST = " AD"
#NOT YET IMPLEMENTED *IGNORE*
USE_PERIODS = true
#Gradual tint effects! (The hardest part)
#It may look daunting, and it is, but here is where you put the tint
#to be shown at each hour (the actual tint is usually somewhere in between)
#The number of Color.new objects here must equal the number of hours in a day
#Starts from hour 0 (or 12am)
#A color object is -> Color.new(r,g,b,a)
# Where r is red,g is green,b is blue,and a is opacity and all are (0-255)
TINTS = [Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),
Color.new(0,0,0,0),]
#NOT YET IMPLEMENTED *IGNORE*
PERIODS = [["Night",0,5],
["Morning",6,11],
["Afternoon",12,17],
["Evening",18,23]]
$gametimeclockvisible = false
#_# END CUSTOMIZATION #_#
module GameTime
def self.run
$game_time = Current_Time.new
$game_time_tint = Sprite_TimeTint.new
end
def self.update
return if $game_message.busy? and NOTIMEMESSAGE
if !SceneManager.scene.is_a?(Scene_Map) and PAUSE_IN_MENUS
return $game_time_tint.update if SceneManager.scene.is_a?(Scene_Title)
return $game_time_tint.update if SceneManager.scene.is_a?(Scene_File)
return unless SceneManager.scene.is_a?(Scene_Battle) and !NOBATTLETIME
end
$game_time.update
$game_time_tint = Sprite_TimeTint.new if $game_time_tint.disposed?
update_tint
end
def self.update_tint
$game_time_tint.update unless @pause_tint
end
def self.sec?
return $game_time.sec
end
def self.min?
return $game_time.min
end
def self.mint?
return $game_time.min if $game_time.min > 9
return "0" + $game_time.min.to_s
end
def self.hour?
return $game_time.hour
end
def self.hour_nom?
hour = $game_time.hour
hour -= 12 if hour > 11
hour = 12 if hour == 0
return hour
end
def self.day?
return $game_time.day if $USE_REAL_TIME
return $game_time.day + 1
end
def self.day_week?
return $game_time.dayweek
end
def self.day_year?
month = month? - 1
day = day?
while month > 0
day += MONTHS[month]
month -= 1
end
day
end
def self.day_name
return DAYNAMES[$game_time.dayweek-1] if $USE_REAL_TIME
return DAYNAMES[$game_time.dayweek]
end
def self.day_name_abbr
return DAYNAMESABBR[$game_time.dayweek-1] if $USE_REAL_TIME
return DAYNAMESABBR[$game_time.dayweek]
end
def self.month_name_abbr
return MONTHNAMESABBR[$game_time.month-1] if $USE_REAL_TIME
return MONTHNAMESABBR[$game_time.month]
end
def self.month?
return $game_time.month if $USE_REAL_TIME
return $game_time.month + 1
end
def self.month_name
return MONTHNAMES[$game_time.month-1] if $USE_REAL_TIME
return MONTHNAMES[$game_time.month]
end
def self.year?
return $game_time.year
end
def self.pause_tint(set)
@pause_tint = set
end
def self.change(s = nil,m = nil,h = nil,d = nil,dw = nil, mn = nil,y = nil)
$game_time.manual(s,m,h,d,dw,mn,y)
end
def self.set(handle,n)
$game_time.forward(handle,n)
end
def self.clock?(set)
SceneManager.scene.clock_visible?(set)
end
def self.year_post(set)
$game_time.year_post = set
end
def self.save_time
$saved_game_time = $game_time.dup
end
def self.load_time
$game_time = $saved_game_time.dup
end
def self.no_time_map
note = $game_map.map_note
/Notime/ =~ note
return false unless $~
return true
end
def self.notime(set)
$game_time.notime = set
end
class Current_Time
attr_reader :sec
attr_reader :min
attr_reader :hour
attr_reader :day
attr_reader :dayweek
attr_reader :month
attr_reader :year
attr_accessor :year_post
attr_accessor :notime
def initialize
reset_all_values
end
def reset_all_values
@sec = START_TIME[0]
@min = START_TIME[1]
@hour = START_TIME[2]
@day = START_TIME[3]
@dayweek = 0
@month = START_TIME[4]
@year = START_TIME[5]
@notime = false
@year_post = DEFAULT_YEAR_POST
end
def update
return realtime if $USE_REAL_TIME
return if GameTime.no_time_map or @notime
$game_variables[TIMELAPSE_VARIABLE] = DEFAULT_TIMELAPSE if $game_variables[TIMELAPSE_VARIABLE] <= 0
return unless Graphics.frame_count % $game_variables[TIMELAPSE_VARIABLE] == 0
NOSECONDS ? addmin(1) : addsec(1)
update_timers
end
def update_timers
return unless TIMER_VARIABLES.size > 0
for i in TIMER_VARIABLES
$game_variables -= 1 unless $game_variables == 0
end
end
def realtime
@sec = Time.now.sec
@sec = 0 if @sec == 60
@min = Time.now.min
@hour = Time.now.hour
@day = Time.now.day
@dayweek = Time.now.wday
@month = Time.now.month
@year = Time.now.year
0
end
def addsec(s)
@sec += s
return unless @sec == SECONDSINMIN
@sec = 0
addmin(1)
end
def addmin(m)
@min += m
return unless @min == MINUTESINHOUR
@min = 0
addhour(1)
end
def addhour(h)
@hour += h
return unless @hour == HOURSINDAY
@hour = 0
addday(1)
end
def addday(d)
@day += d
@dayweek += d
@dayweek = 0 if @dayweek == DAYNAMES.size
return unless @day == MONTHS[@month]
@day = 0
addmonth(1)
end
def addmonth(mn)
@month += mn
return unless @month == MONTHS.size
@month = 0
addyear(1)
end
def addyear(y)
@year += y
end
def manual(s = nil,m = nil,h = nil,d = nil,dw = nil,mn = nil,y = nil)
@sec = s if !s.nil?
@sec = SECONDSINMIN - 1 if @sec >= SECONDSINMIN
@min = m if !m.nil?
@min = MINUTESINHOUR - 1 if @min >= MINUTESINHOUR
@hour = h if !h.nil?
@hour = HOURSINDAY - 1 if @hour >= HOURSINDAY
@day = d if !d.nil?
@day = MONTHS[@month] - 1 if @day >= MONTHS[@month]
@dayweek = dw if !dw.nil?
@dayweek = 0 if @dayweek >= DAYNAMES.size
@month = mn if !mn.nil?
@month = MONTHS.size - 1 if @month >= MONTHS.size
@year = y if !y.nil?
end
def forward(handle,n)
handle = handle.to_s + "(1)"
n.times do |s| eval(handle) end
end
def remsec(s)
@sec -= s
return unless @sec == -1
@sec = SECONDSINMIN
remmin(1)
end
def remmin(m)
@min -= m
return unless @min == -1
@min = MINUTESINHOUR
remhour(1)
end
def remhour(h)
@hour -= h
return unless @hour == -1
@hour = HOURSINDAY - 1
remday(1)
end
def remday(d)
@day -= d
@dayweek -= d
@dayweek = DAYNAMES.size - 1 if @dayweek == -1
return unless @day == -1
@day = MONTHS[@month] - 1
remmonth(1)
end
def remmonth(mn)
@month -= mn
return unless @month == -1
@month = MONTHS.size - 1
remyear(1)
end
def remyear(y)
@year -= y
end
end
class Sprite_TimeTint < Sprite_Base
def initialize(viewport = nil)
super(viewport)
self.z = 10
create_contents
update
@old_tint = [0,0,0,0]
@old_time = 0
end
def create_contents
self.bitmap = Bitmap.new(Graphics.width,Graphics.height)
self.visible = false
end
def update
return use_default if SceneManager.scene.is_a?(Scene_Battle) and BATTLE_TINT
return use_khas if USE_KHAS
return use_victor if USE_VICTOR
return use_default
end
def use_default
return if self.disposed?
create_contents if self.bitmap.height != Graphics.height
create_contents if self.bitmap.width != Graphics.width
self.visible = SceneManager.scene.is_a?(Scene_Map)
self.visible = true if SceneManager.scene.is_a?(Scene_Battle) and BATTLE_TINT
self.visible = false if SceneManager.scene.is_a?(Scene_Title)
self.visible = false if no_tint
return unless self.visible
min = $game_time.min
return if min == @old_time
@old_time = min
rgba = get_new_tint(min)
return if rgba == @old_tint
@old_tint = rgba
self.bitmap.clear
self.bitmap.fill_rect(0,0,Graphics.width,Graphics.height,Color.new(rgba[0],rgba[1],rgba[2],rgba[3]))
end
def use_khas
begin
temp = $game_map.light_surface.opacity
rescue
return
end
self.visible = false
$game_map.effect_surface.change_color(1,0,0,0,0) if no_tint
return if no_tint
min = $game_time.min
return if min == @old_time
@old_time = min
rgba = get_new_tint(min)
return if rgba == @old_tint
@old_tint = rgba
$game_map.effect_surface.change_color(1,rgba[0],rgba[1],rgba[2],rgba[3])
end
def no_tint
return if $game_map.nil?
note = $game_map.map_note
/Notint/ =~ note
return false unless $~
return true
end
def use_victor
return if $game_map.nil?
self.visible = false
$game_map.screen.shade.change_color(0,0,0,0) if no_tint
$game_map.screen.shade.change_opacity(0) if no_tint
return if no_tint
$game_map.screen.shade.show if !$game_map.screen.shade.visible
min = $game_time.min
return if min == @old_time
@old_time = min
rgba = get_new_tint(min)
return if rgba == @old_tint
@old_tint = rgba
$game_map.screen.shade.change_color(rgba[0],rgba[1],rgba[2],0)
$game_map.screen.shade.change_opacity(rgba[3],0)
end
def get_new_tint(min)
ctint = TINTS[$game_time.hour]
ntint = TINTS[$game_time.hour + 1] unless $game_time.hour + 1 == HOURSINDAY
ntint = TINTS[0] if $game_time.hour + 1 == HOURSINDAY
r = ctint.red.to_f - ((ctint.red.to_f - ntint.red) * (min.to_f / MINUTESINHOUR))
g = ctint.green.to_f - ((ctint.green.to_f - ntint.green) * (min.to_f / MINUTESINHOUR))
b = ctint.blue.to_f - ((ctint.blue.to_f - ntint.blue) * (min.to_f / MINUTESINHOUR))
a = ctint.alpha.to_f - ((ctint.alpha.to_f - ntint.alpha) * (min.to_f / MINUTESINHOUR))
return [r,g,b,a]
end
end
class Window_GameClock < Window_Base
def initialize
super(CLOCK_X,CLOCK_Y,CLOCK_WIDTH,clock_height)
self.opacity = CLOCK_BACK unless SceneManager.scene.is_a?(Scene_Menu)
update
self.visible = $gametimeclockvisible unless SceneManager.scene.is_a?(Scene_Menu)
end
def clock_height
return 80 if !CUSTOM_CLOCK2.nil? and CLOCK_FORMAT == 5 and SceneManager.scene.is_a?(Scene_Map)
return 80 if !CUSTOM_CLOCK2.nil? and MENU_CLOCK_FORMAT == 5 and SceneManager.scene.is_a?(Scene_Menu)
return 56
end
def update
if NOSECONDS && @set_minute == $game_time.min
if Graphics.frame_count % BLINK_SPEED / 2 == 0 && USE_BLINK
return
end
end
contents.clear
@set_minute = $game_time.min if NOSECONDS
if SceneManager.scene.is_a?(Scene_Map)
v = CLOCK_FORMAT
else
v = MENU_CLOCK_FORMAT
end
string = normal_clock if v == 1
string = dated_clock if v == 2
string = military_clock if v == 3
string = dated_military_clock if v == 4
string = custom(CUSTOM_CLOCK) if v == 5
string2 = custom(CUSTOM_CLOCK2) if !CUSTOM_CLOCK2.nil? and v == 5
contents.draw_text(0,0,contents.width,24,string,1)
contents.draw_text(0,24,contents.width,24,string2,1) if !CUSTOM_CLOCK2.nil? and v == 5
end
def military_clock
hour = $game_time.hour
minute = $game_time.min
if hour < 10 then hour = " " + hour.to_s else hour.to_s end
if minute < 10 then minute = "0" + minute.to_s else minute.to_s end
string = hour.to_s + blinky + minute.to_s
return string
end
def dated_military_clock
hour = $game_time.hour
minute = $game_time.min
dayweek = DAYNAMESABBR[$game_time.dayweek]
day = $game_time.day
day += 1 unless $USE_REAL_TIME
if hour < 10 then hour = " " + hour.to_s else hour.to_s end
if minute < 10 then minute = "0" + minute.to_s else minute.to_s end
if day < 10 then day = " " + day.to_s end
string = dayweek.to_s + " " + day.to_s + " "
string += hour.to_s + blinky + minute.to_s
return string
end
def normal_clock
meri = "AM"
hour = $game_time.hour
minute = $game_time.min
if hour > 11 then meri = "PM" end
if hour == 0 then hour = 12; meri = "AM" end
if hour > 12 then hour -= 12 end
if hour < 10 then hour = " " + hour.to_s else hour.to_s end
if minute < 10 then minute = "0" + minute.to_s else minute.to_s end
string = hour.to_s + blinky + minute.to_s + " " + meri
return string
end
def dated_clock
meri = "AM"
hour = $game_time.hour
minute = $game_time.min
dayweek = DAYNAMESABBR[$game_time.dayweek]
day = $game_time.day
day += 1 unless $USE_REAL_TIME
if hour > 11 then meri = "PM" end
if hour == 0 then hour = 12; meri = "AM" end
if hour > 12 then hour -= 12 end
if hour < 10 then hour = " " + hour.to_s else hour.to_s end
if minute < 10 then minute = "0" + minute.to_s else minute.to_s end
if day < 10 then day = " " + day.to_s end
string = dayweek.to_s + " " + day.to_s + " "
string += hour.to_s + blinky + minute.to_s + " " + meri
return string
end
def blinky
return ":" unless USE_BLINK
return " " if Graphics.frame_count % BLINK_SPEED > (BLINK_SPEED / 2)
return ":"
end
def custom(array)
string = ""
for command in array
case command
when "sec"
sec = $game_time.sec
sec = "0" + sec.to_s if sec < 10
string += sec.to_s
when "min"
minute = $game_time.min
minute = "0" + minute.to_s if minute < 10
string += minute.to_s
when "hour"
hour = $game_time.hour
hour >= 12 ? meri = "PM" : meri = "AM"
hour = " " + hour.to_s if hour < 10
string += hour.to_s
when "hour12"
hour12 = $game_time.hour
hour12 -= 12 if hour12 > 12
hour12 = 12 if hour12 == 0
string += hour12.to_s
when "meri"
hour = $game_time.hour
hour >= 12 ? meri = "PM" : meri = "AM"
string += meri.to_s
when "weekshort"
dayweek = DAYNAMESABBR[$game_time.dayweek]
string += dayweek.to_s
when "weeklong"
dayweekn = DAYNAMES[$game_time.dayweek]
string += dayweekn.to_s
when "day"
day = $game_time.day
day += 1 unless $USE_REAL_TIME
string += day.to_s
when "month"
month = $game_time.month
month += 1 unless $USE_REAL_TIME
string += month.to_s
when "monthshort"
monthna = MONTHNAMESABBR[$game_time.month]
string += monthna.to_s
when "monthlong"
monthn = MONTHNAMES[$game_time.month]
string += monthn.to_s
when "year"
year = $game_time.year
string += year.to_s
when "yearp"
string += $game_time.year_post
when "blinky"
string += blinky
else
string += command.to_s
end
end
return string
end
end
end
GameTime.run
class Window_Base < Window
alias game_time_convert_escape_characters convert_escape_characters
def convert_escape_characters(text)
result = game_time_convert_escape_characters(text)
result.gsub!(/GTSEC/) { GameTime.sec? }
result.gsub!(/GTMIN/) { GameTime.mint? }
result.gsub!(/GTHOUR/) { GameTime.hour? }
result.gsub!(/GTDAYN/) { GameTime.day? }
result.gsub!(/GTDAYF/) { GameTime.day_name }
result.gsub!(/GTDAYA/) { GameTime.day_name_abbr }
result.gsub!(/GTMONF/) { GameTime.month? }
result.gsub!(/GTMONN/) { GameTime.month_name }
result.gsub!(/GTMONA/) { GameTime.month_name_abbr }
result.gsub!(/GTYEAR/) { GameTime.year? }
result
end
end
class Scene_Base
alias game_time_update update
def update
game_time_update
GameTime.update
end
end
class Scene_Map
alias game_time_post_transfer post_transfer
alias game_time_init create_all_windows
alias game_time_map_update update
alias game_time_start start
def start
game_time_start
GameTime.update_tint
end
def create_all_windows
game_time_init
@gametimeclock = GameTime::Window_GameClock.new if USECLOCK
if CUSTOM_CLOCK_BACKGROUND
@clockbackground = Sprite.new(@gametimeclock.viewport)
@clockbackground.bitmap = Cache.picture(CUSTOM_CLOCK_BACKGROUND_IMAGE)
@clockbackground.x = @gametimeclock.x
@clockbackground.x += CUSTOM_CLOCK_BACKGROUND_X
@clockbackground.y = @gametimeclock.y
@clockbackground.y += CUSTOM_CLOCK_BACKGROUND_Y
end
end
def post_transfer
GameTime.update_tint
game_time_post_transfer
end
def update
game_time_map_update
return unless USECLOCK
@gametimeclock.update unless SceneManager.scene != self
if Input.trigger?(CLOCK_TOGGLE) and @gametimeclock.nil? == false
@gametimeclock.visible ? @gametimeclock.visible = false : @gametimeclock.visible = true
$gametimeclockvisible = @gametimeclock.visible
@clockbackground.visible = @gametimeclock.visible if @clockbackground
end
end
def clock_visible?(set)
@gametimeclock.visible = set
end
def update_encounter
if $game_player.encounter
$game_time_tint.use_default
SceneManager.call(Scene_Battle)
end
end
end
class Game_Map
def map_note
return @map.note unless @map.nil?
end
end
class Scene_Menu
alias gt_start start
alias gt_update update
def start
gt_start
@clock = GameTime::Window_GameClock.new if USECLOCK_MENU
return if @clock.nil?
@clock.x = 0
@clock.y = @gold_window.y - @clock.height
@clock.width = @gold_window.width
@clock.create_contents
end
def update
gt_update
@clock.update unless @clock.nil?
@clock.contents.clear if SceneManager.scene != self and !@clock.nil?
end
end
class Scene_Battle
def pre_terminate
super
Graphics.fadeout(30) if SceneManager.scene_is?(Scene_Map)
Graphics.fadeout(60) if SceneManager.scene_is?(Scene_Title)
$game_time_tint.update
end
end
module DataManager
class << self
alias gametime_msc make_save_contents
alias gametime_esc extract_save_contents
alias gametime_sng setup_new_game
end
def self.make_save_contents
contents = gametime_msc
contents[:gametime] = $game_time
contents
end
def self.extract_save_contents(contents)
gametime_esc(contents)
$game_time = contents[:gametime]
end
def self.setup_new_game
gametime_sng
$game_time = GameTime::Current_Time.new
end
endentra in conflitto con uno script che non mi sarei mai aspettato, quello di MOG_HUNTER BATTLE RESULT (Script che fa vedere i risultati di battaglia. Oltretutto io utilizzo il Battle system alla MOG, quindi ho parecchi script suoi.)
#==============================================================================
# +++ MOG - Battle Result (1.4) +++
#==============================================================================
# By Moghunter
# http://www.atelier-rgss.com
#==============================================================================
# Apresentação animada do resultado da batalha.
#==============================================================================
# Arquivos necessários. (Graphics/System)
#
# Result.png
# Result_Layout.png
# Result_Levelup.png
# Result_Levelword.png
# Result_Number_1.png
# Result_Number_2.png
#
#==============================================================================
# Histórico (Version History)
#==============================================================================
# 1.4 - Compatibilidade com o script de pause.
# 1.3 - Melhoria do código e compatibilidade.
# 1.2 - Melhoria do código e compatibilidade.
# - Adição de sons.
# 1.1 - Corrigido o erro de apresentar o Resultado ao fugir ou perder a batalha.
#==============================================================================
module MOG_BATLE_RESULT
#Posição do EXP.
RESULT_EXP_POSITION = [440,80]
#Posição do GOLD.
RESULT_GOLD_POSITION = [476,125]
#Posição da palavra LeveL UP.
RESULT_LEVELWORD_POSITION = [0,0]
#Posição do Level.
RESULT_LEVEL_POSITION = [230,-7]
#Posição dos parâmetros
RESULT_PARAMETER_POSITION = [70,70]
#Posição da janela de skill.
RESULT_NEW_SKILL_POSITION = [240,230]
#Definição da animação de Level UP.
RESULT_LEVELUP_ANIMATION_ID = 126
end
#==============================================================================
# ■ Game Temp
#==============================================================================
class Game_Temp
attr_accessor :level_parameter
attr_accessor :level_parameter_old
attr_accessor :result
attr_accessor :battle_end
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
alias mog_result_initialize initialize
def initialize
@level_parameter = []
@level_parameter_old = []
@result = false
@battle_end = false
mog_result_initialize
end
end
#==============================================================================
# ■ Game Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● Display_level_up
#--------------------------------------------------------------------------
alias mog_result_display_level_up display_level_up
def display_level_up(new_skills)
if $game_temp.result
$game_temp.level_parameter = [@level,new_skills]
return
end
mog_result_display_level_up(new_skills)
end
end
#==============================================================================
# ■ BattleManager
#==============================================================================
module BattleManager
#--------------------------------------------------------------------------
# ● Process Victory
#--------------------------------------------------------------------------
def self.process_victory
play_battle_end_me
replay_bgm_and_bgs
if $mog_rgss3_battle_cry != nil
execute_battle_cry(1, nil, nil)
end
battle_end(0)
SceneManager.return
return true
end
end
#==============================================================================
# ■ Spriteset Battle
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● Dispose
#--------------------------------------------------------------------------
alias mog_battle_result_pre_terminate pre_terminate
def pre_terminate
execute_result if can_enable_battle_result?
mog_battle_result_pre_terminate
end
#--------------------------------------------------------------------------
# ● Can Enable Battle Result?
#--------------------------------------------------------------------------
def can_enable_battle_result?
return false if !$game_troop.all_dead?
return false if $game_party.members.empty?
return false if $game_party.all_dead?
return true
end
#--------------------------------------------------------------------------
# ● Execute Result
#--------------------------------------------------------------------------
def execute_result
@result = Battle_Result.new
if $mog_rgss3_combo_count != nil
$game_temp.combo_time = 0 rescue nil
end
loop do
@result.update
@spriteset.update
Graphics.update
Input.update
break if @result.victory_phase == 10
end
@result.dispose
end
end
#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
include MOG_BATLE_RESULT
attr_accessor :victory_phase
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
def initialize
$game_temp.battle_end = true
$game_temp.result = true
@victory_phase = 0
@victory_wait_duration = 0
@fade_result_window = false
create_victory_sprites
end
#--------------------------------------------------------------------------
# ● Create Victory Sprites
#--------------------------------------------------------------------------
def create_victory_sprites
@result_number = Cache.system("Result_Number_1")
@result_number2 = Cache.system("Result_Number_2")
@result_cw = @result_number.width / 10
@result_ch = @result_number.height / 2
@result2_cw = @result_number2.width / 10
@result2_ch = @result_number2.height / 2
create_victory_text
create_victory_layout
create_victory_exp
create_victory_gold
create_window_treasure
end
#--------------------------------------------------------------------------
# ● Victory Wait ?
#--------------------------------------------------------------------------
def victory_wait?
return false if @victory_wait_duration <= 0
@victory_wait_duration -= 1
return true
end
#--------------------------------------------------------------------------
# ● End Victory
#--------------------------------------------------------------------------
def end_victory
@victory_wait_duration = 10
dispose
end
#--------------------------------------------------------------------------
# ● Create Victory Layout
#--------------------------------------------------------------------------
def create_victory_layout
return if @victory_layout_sprite != nil
@victory_layout_sprite = Sprite.new
@victory_layout_sprite.z = 1001
@victory_layout_sprite.bitmap = Cache.system("Result_Layout")
@victory_layout_sprite.zoom_x = 2.0
@victory_layout_sprite.opacity = 0
end
#--------------------------------------------------------------------------
# ● Create Victory Text
#--------------------------------------------------------------------------
def create_victory_text
return if @victory_sprite != nil
@victory_sprite = Sprite.new
@victory_sprite.z = 1000
@victory_sprite.bitmap = Cache.system("Result")
@victory_sprite.ox = @victory_sprite.width / 2
@victory_sprite.oy = @victory_sprite.height / 2
@victory_sprite.x = @victory_sprite.ox
@victory_sprite.y = @victory_sprite.oy
@victory_sprite.zoom_x = 1.5
@victory_sprite.zoom_y = 1.5
@victory_sprite.opacity = 0
end
end
#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
#--------------------------------------------------------------------------
# ● Dispose
#--------------------------------------------------------------------------
def dispose
$game_temp.result = false
$game_temp.battle_end = false
@victory_sprite.bitmap.dispose
@victory_sprite.dispose
@victory_layout_sprite.bitmap.dispose
@victory_layout_sprite.dispose
@exp_number.bitmap.dispose
@exp_number.dispose
@gold_number.bitmap.dispose
@gold_number.dispose
@result_number.dispose
@window_treasure.dispose
dispose_level_up
@result_number.dispose
@result_number2.dispose
@tr_viewport.dispose
end
#--------------------------------------------------------------------------
# ● Dispose Result Actor Bitmap
#--------------------------------------------------------------------------
def dispose_result_actor_bitmap
return if @result_actor_sprite == nil
return if @result_actor_sprite.bitmap == nil
@result_actor_sprite.bitmap.dispose
end
#--------------------------------------------------------------------------
# ● Dispose Level UP
#--------------------------------------------------------------------------
def dispose_level_up
return if @levelup_layout == nil
@levelup_layout.bitmap.dispose
@levelup_layout.dispose
@levelup_word.bitmap.dispose
@levelup_word.dispose
@result_actor_sprite.bitmap.dispose
@result_actor_sprite.dispose
@parameter_sprite.bitmap.dispose
@parameter_sprite.dispose
@level_sprite.bitmap.dispose
@level_sprite.dispose
if @new_skill_window != nil
@new_skill_window.dispose
end
end
end
#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
def update
if $mog_rgss3_pause != nil
update_pause if MOG_PAUSE::PAUSE_SCENE_BATTLE
end
return if @victory_phase == nil
update_victory_fade if @fade_result_window
return if victory_wait?
case @victory_phase
when 0; update_victory_initial
when 1; update_victory_initial2
when 2; update_victory_initial3
when 3; update_victory_exp
when 4; update_victory_gold
when 5; update_victory_item
when 6; update_victory_levelup
when 9; update_skip_result
end
if Input.trigger?(:C)
if @victory_phase == 10
end_victory
elsif @victory_phase.between?(1,5)
Sound.play_cursor
@victory_phase = 9
end
end
end
#--------------------------------------------------------------------------
# ● Skip Result
#--------------------------------------------------------------------------
def update_skip_result
@victory_sprite.opacity -= 10
@victory_sprite.visible = false
@victory_layout_sprite.opacity += 10
@victory_layout_sprite.zoom_x = 1.00
@gold_number.opacity += 10
@gold_number.zoom_x = 1.00
@gold_number.zoom_y = 1.00
@exp_number.opacity += 10
@exp_number.zoom_x = 1.00
@exp_number.zoom_y = 1.00
@window_treasure.contents_opacity += 10
if @exp_old != @exp_total
@exp_old = @exp_total
refresh_exp_number
end
if @gold_old = @gold_total
@gold_old = @gold_total
refresh_gold_number
end
@window_treasure.x = 0
update_victory_item if @window_treasure.contents_opacity == 255
end
#--------------------------------------------------------------------------
# ● Update Victory Fade
#--------------------------------------------------------------------------
def update_victory_fade
fade_speed = 10
@victory_sprite.opacity -= fade_speed
@victory_layout_sprite.opacity -= fade_speed
@gold_number.opacity -= fade_speed
@exp_number.opacity -= fade_speed
@window_treasure.contents_opacity -= fade_speed
end
#--------------------------------------------------------------------------
# ● Update Victory Initial
#--------------------------------------------------------------------------
def update_victory_initial
@victory_sprite.zoom_x -= 0.01
@victory_sprite.zoom_y -= 0.01
@victory_sprite.opacity += 10
if @victory_sprite.zoom_x <= 1.00
@victory_sprite.zoom_x = 1
@victory_sprite.zoom_y = 1
@victory_sprite.opacity = 255
@victory_phase = 1
@victory_wait_duration = 20
end
end
#--------------------------------------------------------------------------
# ● Update Victory Initial 2
#--------------------------------------------------------------------------
def update_victory_initial2
@victory_sprite.zoom_x += 0.01
@victory_sprite.zoom_y += 0.01
@victory_sprite.opacity -= 10
if @victory_sprite.opacity <= 0
@victory_sprite.zoom_x = 1
@victory_sprite.zoom_y = 1
@victory_sprite.opacity = 0
@victory_phase = 2
end
end
#--------------------------------------------------------------------------
# ● Update Victory Initial 3
#--------------------------------------------------------------------------
def update_victory_initial3
@victory_layout_sprite.zoom_x -= 0.02
@victory_layout_sprite.opacity += 10
if @victory_layout_sprite.zoom_x <= 1.00
@victory_layout_sprite.zoom_x = 1
@victory_layout_sprite.opacity = 255
@victory_phase = 3
end
end
end
#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
#--------------------------------------------------------------------------
# ● Create Victory Exp
#--------------------------------------------------------------------------
def create_victory_exp
@exp_number = Sprite.new
@exp_number.bitmap = Bitmap.new(@result_number.width,@result_ch)
@exp_number.z = 1002
@exp_number.y = RESULT_EXP_POSITION[1]
@exp_number.zoom_x = 2
@exp_number.zoom_y = 2
@exp_total = $game_troop.exp_total
@exp_number.opacity = 0
@exp_old = 0
@exp_ref = ((1 * @exp_total) / 111).truncate rescue nil
@exp_ref = 1 if @exp_ref < 1 or @exp_ref == nil
@exp_ref = 0 if @exp_total == 0
refresh_exp_number
end
#--------------------------------------------------------------------------
# ● Update Victory Exp
#--------------------------------------------------------------------------
def update_victory_exp
update_exp_sprite
update_exp_number
end
#--------------------------------------------------------------------------
# ● Update EXP Sprite
#--------------------------------------------------------------------------
def update_exp_sprite
@exp_number.opacity += 15
if @exp_number.zoom_x > 1.00
@exp_number.zoom_x -= 0.03
@exp_number.zoom_x = 1.00 if @exp_number.zoom_x <= 1.00
end
@exp_number.zoom_y = @exp_number.zoom_x
if (@exp_old >= @exp_total) and @exp_number.zoom_x == 1.00
@victory_phase = 4
Sound.play_cursor
end
end
#--------------------------------------------------------------------------
# ● Refresh Exp Number
#--------------------------------------------------------------------------
def refresh_exp_number
@exp_number.bitmap.clear
draw_result_exp(@exp_old, 0,0)
end
#--------------------------------------------------------------------------
# ● Update Exp_number
#--------------------------------------------------------------------------
def update_exp_number
return if @exp_old == @exp_total
@exp_old += @exp_ref
@exp_old = @exp_total if @exp_old > @exp_total
refresh_exp_number
end
#--------------------------------------------------------------------------
# ● Draw Result EXP
#--------------------------------------------------------------------------
def draw_result_exp(value,x,y)
ncw = @result_cw
nch = @result_ch
number = value.abs.to_s.split(//)
x2 = x - (number.size * ncw)
@exp_number.ox = (number.size * ncw) / 2
@exp_number.oy = @result_ch / 2
@exp_number.x = (RESULT_EXP_POSITION[0] + @result_cw + @exp_number.ox) - (number.size * ncw)
for r in 0..number.size - 1
number_abs = number[r].to_i
nsrc_rect = Rect.new(ncw * number_abs, 0, ncw, nch)
@exp_number.bitmap.blt(x + (ncw * r), y, @result_number, nsrc_rect)
end
end
end
#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
#--------------------------------------------------------------------------
# ● Create Victory Gold
#--------------------------------------------------------------------------
def create_victory_gold
@gold_number = Sprite.new
@gold_number.bitmap = Bitmap.new(@result_number.width,@result_ch)
@gold_number.z = 1002
@gold_number.y = RESULT_GOLD_POSITION[1]
@gold_number.opacity = 0
@gold_number.zoom_x = 2
@gold_number.zoom_y = 2
@gold_total = $game_troop.gold_total
@gold_old = 0
@gold_ref = ((1 * @gold_total) / 111).truncate rescue nil
@gold_ref = 1 if @gold_ref < 1 or @gold_ref == nil
@gold_ref = 0 if @gold_total == 0
$game_party.gain_gold($game_troop.gold_total)
refresh_gold_number
end
#--------------------------------------------------------------------------
# ● Update Victory Gold
#--------------------------------------------------------------------------
def update_victory_gold
update_gold_sprite
update_gold_number
end
#--------------------------------------------------------------------------
# ● Update GOLD Sprite
#--------------------------------------------------------------------------
def update_gold_sprite
@gold_number.opacity += 15
if @gold_number.zoom_x > 1.00
@gold_number.zoom_x -= 0.03
@gold_number.zoom_x = 1.00 if @gold_number.zoom_x <= 1.00
end
@gold_number.zoom_y = @gold_number.zoom_x
if @gold_old >= @gold_total and @gold_number.zoom_x == 1.00
@victory_phase = 5
Sound.play_cursor
end
end
#--------------------------------------------------------------------------
# ● Refresh gold Number
#--------------------------------------------------------------------------
def refresh_gold_number
@gold_number.bitmap.clear
draw_result_gold(@gold_old, 0,0)
end
#--------------------------------------------------------------------------
# ● Update Gold Number
#--------------------------------------------------------------------------
def update_gold_number
return if @gold_old == @gold_total
@gold_old += @gold_ref
@gold_old = @gold_total if @gold_old > @gold_total
refresh_gold_number
end
#--------------------------------------------------------------------------
# ● Draw Result Gold
#--------------------------------------------------------------------------
def draw_result_gold(value,x,y)
ncw = @result_cw
nch = @result_ch
number = value.abs.to_s.split(//)
x2 = x - (number.size * ncw)
@gold_number.ox = (number.size * ncw) / 2
@gold_number.oy = @result_ch / 2
@gold_number.x = (RESULT_GOLD_POSITION[0] + @result_cw + @gold_number.ox) - (number.size * ncw)
for r in 0..number.size - 1
number_abs = number[r].to_i
nsrc_rect = Rect.new(ncw * number_abs, @result_ch, ncw, nch)
@gold_number.bitmap.blt(x + (ncw * r), y, @result_number, nsrc_rect)
end
end
end
#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
#--------------------------------------------------------------------------
# ● Create Window Treasure
#--------------------------------------------------------------------------
def create_window_treasure
@tr_viewport = Viewport.new(-8, 164, 576, 118)
@tr_viewport.z = 1003
@window_treasure = Window_Treasure.new
@window_treasure.viewport = @tr_viewport
end
#--------------------------------------------------------------------------
# ● Update Victory Item
#--------------------------------------------------------------------------
def update_victory_item
@window_treasure.update
@actor_level = []
return if @window_treasure.x != 0 and @victory_phase >= 6
@victory_phase = 6
@result_member_max = $game_party.battle_members.size
@result_member_id = 0
end
end
#==============================================================================
# ■ Window Treasure
#==============================================================================
class Window_Treasure < Window_Base
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
def initialize
super(-544,-10, 576, 256)
self.opacity = 0
self.contents_opacity = 0
self.contents.font.size = 24
self.contents.font.bold = true
self.z = 1003
@range_max = 256
@wait_time = 30
@scroll = false
draw_treasure
end
#--------------------------------------------------------------------------
# ● Draw_Treasure
#--------------------------------------------------------------------------
def draw_treasure
contents.clear
t_index = 0
space_x = 540 / 3
$game_troop.make_drop_items.each do |item|
xi = (t_index * space_x) - ((t_index / 3) * (space_x * 3))
yi = (t_index / 3) * 32
$game_party.gain_item(item, 1)
draw_item_name(item,xi, yi, true, 140)
t_index += 1
end
@range_max = (t_index / 3) * 32
@scroll = true if t_index > 12
end
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
def update
super
self.contents_opacity += 10
if self.x < 0
self.x += 15
if self.x >= 0
self.x = 0
Sound.play_cursor
end
end
if @scroll and self.contents_opacity == 255 and self.x == 0
@wait_time -= 1 if @wait_time > 0
return if @wait_time > 0
self.y -= 1
self.y = 128 if self.y < -@range_max
@wait_time = 30 if self.y == -10
end
end
end
#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
#--------------------------------------------------------------------------
# ● Create Levelup
#--------------------------------------------------------------------------
def create_levelup
if @levelup_layout == nil
@levelup_layout = Sprite.new
@levelup_layout.z = 1000
@levelup_layout.bitmap = Cache.system("Result_Levelup")
end
if @levelup_word == nil
@levelup_word = Sprite.new
@levelup_word.z = 1001
@levelup_word.bitmap = Cache.system("Result_Levelword")
@levelup_word.ox = @levelup_word.bitmap.width / 2
@levelup_word.oy = @levelup_word.bitmap.height / 2
@levelup_word.x = @levelup_word.ox + RESULT_LEVELWORD_POSITION[0]
@levelup_word.y = @levelup_word.oy + RESULT_LEVELWORD_POSITION[1]
end
@levelup_word.blend_type = 1
@levelup_word.zoom_x = 2
@levelup_word.zoom_y = 2
end
#--------------------------------------------------------------------------
# ● Create Parameter Number
#--------------------------------------------------------------------------
def create_parameter_number
if @parameter_sprite == nil
@parameter_sprite = Sprite.new
@parameter_sprite.bitmap = Bitmap.new(250,220)
@parameter_sprite.z = 1001
@parameter_sprite.x = RESULT_PARAMETER_POSITION[0]
@parameter_sprite.y = RESULT_PARAMETER_POSITION[1]
@parameter_sprite.bitmap.font.size = 16
@parameter_sprite.bitmap.font.bold = true
end
refresh_parameter
end
#--------------------------------------------------------------------------
# ● Refresh Parameter
#--------------------------------------------------------------------------
def refresh_parameter
@parameter_animation = 0
@parameter_sprite.bitmap.clear
@parameter_sprite.opacity = 0
@parameter_sprite.x = RESULT_PARAMETER_POSITION[0] - 200
actor_old = $game_temp.level_parameter_old
draw_result_parameter(@actor_result.mhp,actor_old[1],0,28 * 0)
draw_result_parameter(@actor_result.mmp,actor_old[2],0,28 * 1)
draw_result_parameter(@actor_result.atk,actor_old[3],0,28 * 2)
draw_result_parameter(@actor_result.def,actor_old[4],0,28 * 3)
draw_result_parameter(@actor_result.mat,actor_old[5],0,28 * 4)
draw_result_parameter(@actor_result.mdf,actor_old[6],0,28 * 5)
draw_result_parameter(@actor_result.agi,actor_old[7],0,28 * 6)
draw_result_parameter(@actor_result.luk,actor_old[8],0,28 * 7)
end
#--------------------------------------------------------------------------
# ● Draw Result EXP
#--------------------------------------------------------------------------
def draw_result_parameter(value,value2,x,y)
ncw = @result2_cw
nch = @result2_ch
number = value.abs.to_s.split(//)
x2 = x + (number.size * ncw) + 16
for r in 0..number.size - 1
number_abs = number[r].to_i
nsrc_rect = Rect.new(ncw * number_abs, 0, ncw, nch)
@parameter_sprite.bitmap.blt(x + (ncw * r), y, @result_number2, nsrc_rect)
end
value3 = value - value2
par = ""
if value > value2
par = "+"
@parameter_sprite.bitmap.font.color = Color.new(50,255,255)
elsif value < value2
par = ""
@parameter_sprite.bitmap.font.color = Color.new(255,155,100)
end
return if value == value2
@parameter_sprite.bitmap.draw_text(x2,y - 8,100,32,par.to_s + value3.to_s,0)
end
#--------------------------------------------------------------------------
# ● Create Result Actor
#--------------------------------------------------------------------------
def create_result_actor
if @result_actor_sprite == nil
@result_actor_sprite = Sprite.new
@result_actor_sprite.z = 999
end
dispose_result_actor_bitmap
@result_actor_sprite.bitmap = Cache.picture("Actor" + @actor_result.id.to_s)
@result_actor_org = [380 - (@result_actor_sprite.bitmap.width / 2), Graphics.height - @result_actor_sprite.bitmap.height]
@result_actor_sprite.x = @result_actor_org[0] + 200
@result_actor_sprite.y = @result_actor_org[1]
@result_actor_sprite.opacity = 0
end
#--------------------------------------------------------------------------
# ● Check New Skill
#--------------------------------------------------------------------------
def check_new_skill
@new_skills = $game_temp.level_parameter[1]
@new_skills_index = 0
end
#--------------------------------------------------------------------------
# ● Show New Skill
#--------------------------------------------------------------------------
def show_new_skill(start = false)
Sound.play_recovery unless start
@new_skill_window.draw_new_skill(@new_skills[@new_skills_index])
@new_skills_index += 1
if @new_skills_index == @new_skills.size or
@new_skills[@new_skills_index] == nil
@new_skills = nil
end
end
#--------------------------------------------------------------------------
# ● Check Level UP
#--------------------------------------------------------------------------
def check_level_up
if @new_skills != nil and !@new_skills.empty?
show_new_skill
return
end
for battler_id in @result_member_id..@result_member_max
actor_result = $game_party.members[@result_member_id]
$game_temp.level_parameter = [] if $game_temp.level_parameter == nil
$game_temp.level_parameter_old = [] if $game_temp.level_parameter_old == nil
$game_temp.level_parameter.clear
$game_temp.level_parameter_old.clear
$game_temp.level_parameter_old = [actor_result.level,actor_result.mhp,actor_result.mmp,
actor_result.atk, actor_result.def, actor_result.mat, actor_result.mdf, actor_result.agi, actor_result.luk] rescue nil
actor_result.gain_exp($game_troop.exp_total) rescue nil
@result_member_id += 1
@new_skills = nil
@new_skills_index = 0
if $game_temp.level_parameter != nil and !$game_temp.level_parameter.empty?
show_level_result
break
end
end
return if !$game_temp.level_parameter.empty?
@victory_phase = 10 if @result_member_id >= @result_member_max
end
#--------------------------------------------------------------------------
# ● Create Level
#--------------------------------------------------------------------------
def create_level
if @level_sprite == nil
@level_sprite = Sprite.new
@level_sprite.bitmap = Bitmap.new(200,64)
@level_sprite.z = 1002
end
@level_sprite.bitmap.font.size = 48
@level_sprite.bitmap.font.bold = true
@level_sprite.x = RESULT_LEVEL_POSITION[0]
@level_sprite.y = RESULT_LEVEL_POSITION[1]
@level_sprite.bitmap.clear
@level_sprite.bitmap.font.color = Color.new(255,255,255)
@level_sprite.bitmap.draw_text(0,0,100,64,@actor_result.level,1)
levelup = @actor_result.level - $game_temp.level_parameter_old[0]
@level_sprite.bitmap.font.color = Color.new(50,255,255)
@level_sprite.bitmap.font.size = 18
@level_sprite.bitmap.draw_text(80,0,100,64,"+" + levelup.to_s ,0)
end
#--------------------------------------------------------------------------
# ● Create New Skill Windos
#--------------------------------------------------------------------------
def create_new_skill_window
if @new_skill_window == nil
@new_skill_window = Window_Result_Skill.new
end
@new_skill_window.x = RESULT_NEW_SKILL_POSITION[0]
@new_skill_window.y = RESULT_NEW_SKILL_POSITION[1]
check_new_skill
if @new_skills != nil and !@new_skills.empty?
show_new_skill
else
@new_skill_window.x = -544
end
end
#--------------------------------------------------------------------------
# ● Show Level Result
#--------------------------------------------------------------------------
def show_level_result
Sound.play_cursor
@actor_result = $game_party.members[@result_member_id - 1] rescue nil
return if @actor_result == nil
@actor_result.animation_id = RESULT_LEVELUP_ANIMATION_ID
@fade_result_window = true
create_levelup
create_level
create_parameter_number
create_result_actor
create_new_skill_window
end
end
#==============================================================================
# ■ Battle Result
#==============================================================================
class Battle_Result
#--------------------------------------------------------------------------
# ● Update Victory Item
#--------------------------------------------------------------------------
def update_victory_levelup
check_level_up if Input.trigger?(:C)
update_show_levelup
if @levelup_layout == nil
@window_treasure.update
else
@window_treasure.contents_opacity -= 15
end
end
#--------------------------------------------------------------------------
# ● Update Show Level UP
#--------------------------------------------------------------------------
def update_show_levelup
return if @levelup_layout == nil
return if @result_actor_sprite == nil
@new_skill_window.update
if @result_actor_sprite.x > @result_actor_org[0]
@result_actor_sprite.x -= 5
@result_actor_sprite.opacity += 7
if @result_actor_sprite.x <= @result_actor_org[0]
@result_actor_sprite.x = @result_actor_org[0]
@result_actor_sprite.opacity = 255
end
end
if @levelup_word.zoom_x > 1.00
@levelup_word.zoom_x -= 0.03
if @levelup_word.zoom_x < 1.00
@levelup_word.zoom_x = 1.00
@levelup_word.blend_type = 0
end
end
@levelup_word.zoom_y = @levelup_word.zoom_x
if @parameter_sprite.x < RESULT_PARAMETER_POSITION[0]
@parameter_sprite.opacity += 13
@parameter_sprite.x += 5
if @parameter_sprite.x >= RESULT_PARAMETER_POSITION[0]
@parameter_sprite.opacity = 255
@parameter_sprite.x = RESULT_PARAMETER_POSITION[0]
end
end
end
end
#==============================================================================
# ■ Window Result Skill
#==============================================================================
class Window_Result_Skill < Window_Base
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
def initialize
super(0,0, 270, 58)
self.opacity = 160
self.contents_opacity = 255
self.contents.font.name = "Arial"
self.contents.font.bold = true
self.z = 1003
@animation_time = 999
@org = [MOG_BATLE_RESULT::RESULT_NEW_SKILL_POSITION[0],MOG_BATLE_RESULT::RESULT_NEW_SKILL_POSITION[1]]
end
#--------------------------------------------------------------------------
# ● DrawNew Skill
#--------------------------------------------------------------------------
def draw_new_skill(skill)
contents.clear
self.contents.font.size = 16
self.contents.font.color = Color.new(100,200,100)
contents.draw_text(0,0,100,32, "Nuova abilità",0)
self.contents.font.color = Color.new(255,255,255)
draw_item_name_skill(skill,70,0, true, 170)
self.x = @org[0]
self.y = @org[1]
@animation_time = 0
self.opacity = 0
self.contents_opacity = 0
end
#--------------------------------------------------------------------------
# ● Draw Item Name
#--------------------------------------------------------------------------
def draw_item_name_skill(item, x, y, enabled = true, width = 172)
return unless item
draw_icon(item.icon_index, x, y, enabled)
change_color(normal_color, enabled)
draw_text(x + 24, y + 4, width, line_height, item.name)
end
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
def update
super
return if @animation_time == 999
@animation_time += 1 if @animation_time != 999
case @animation_time
when 0..30
self.y -= 1
self.opacity += 5
self.contents_opacity += 5
when 31..60
self.y += 1
self.opacity += 5
self.contents_opacity += 5
else
self.y = @org[1]
self.opacity = 255
self.contents_opacity = 255
@animation_time = 999
end
end
end
$mog_battle_result = trueIl problema è che se l'advanced system time è attivo e funzionante, i risultati di battaglia non vengono visualizzati e non viene assegnata in nessun caso nessuna ricompensa (soldi, exp, oggetti etc.)
Qualche buon anima è disposta a dare un'occhiata agli script sopracitati per vedere se l'errore si può risolvere?
Che Bhunivelze vi benedica <3 -
Ciao a tutti!
In un mio progetto di qualche tempo fa (utilizzavo Rpg VX), avevo inserito il Battle System di FF13, quello con gli optimum per chi non lo sapesse!
A mio parere, era ed è ancora oggi uno script bellissimo che se usato e personalizzato bene, rende le battaglie avvincenti!Mi chiedevo se potrebbe esistere già una versione aggiornata per VxAce, oppure in caso, se era possibile effettuare un porting da Vx a VxAce di questo meraviglioso Battle system!
Questa è l'ultima versione uscita(naturalmente per VX):http://www.mediafire.com/download/jmzz2gjtziz/FFXIII-BS-V2-rev2.zip
-
problemi risolti! (il problema ora sta nel 2° post)
Salve a tutti! Ho un problema con questo script:
http://forums.rpgmakerweb.com/index.php?/topic/3851-advanced-game-time/
Riguarda l'inserimento di un orologio in-game, altamente personalizzabile. Sfortunatamente ho trovato dei Bug e non riesco a risolverli:
1)Mettendo l'immagine personalizzata di Background per l'orologio, quest'ultima non viene visualizzata poichè ho azzerato il valore di opacità del window background.
http://i57.tinypic.com/zjihds.png
(in questa immagine l'immagine custom si vede in trasparenza perchè l'acqua è leggermente opaca per consentire il riflesso. Sull'erba, l'immagine sparisce! E' come se mettesse l'immagine di background dell'orologio, in ultimo piano!)
L'errore sta nel fatto che se io mettessi al max l'opacità del window background, e in contemporanea attivassi l'immagine personalizzata, apparirebbe invece la normale finestra di sfondo e non la mia immagine personalizzata. (o entrambi)
http://i62.tinypic.com/2ywyhok.png
Il bello sta nel fatto che se io entro nel menù, l'immagine di background custom dell'orologio APPARE! Controllando lo script non ho trovato nulla riguardo l'opacità del background personalizzato.
http://i58.tinypic.com/2iuujab.png
2)L'orologio sparisce ogni volta che si cambia mappa (per questo motivo, va messo uno script calls in ogni mappa che richiami l'orologio)
3)Questo problema è molto strano: la PRIMA VOLTA che entri nel menù in una mappa ed hai l'orologio attivo con il background custom, quest'ultimo rimane in sovraimpressione invece di sparire con l'orario. Tornando nuovamente alla mappa, l'orologio non riparte più da solo ma bisogna premere il pulsante specifico (nel mio caso "ALT") per farlo riapparire. Questo vale per la PRIMA VOLTA, già dalla seconda volta che entri nel menù dalla stessa mappa, questo errore non si presenta più, e infatti rientrando nella mappa ritorna subito l'orario (senza background custom......per tornare al punto (1) ... )
4)Non riesco a trovare la possibilità di usare gli script calls per creare degli eventi in determinati orari. Neanche con la condizione IF ci si riesce... :O
Qualcuno che magari utilizza questo script può illuminarmi sulla questione? Grazie in anticipo!

Far sparire più compagni dal "caterpillar" quando PV=0
in Supporto RGSS3 (VX-Ace)
Posted
Sono molto interessanti sia lo script "Follower Options" che "Follower control". Comunque non diventano per forza bare! hahahaha
Li userei subito se non fosse per il fatto che vanno in conflitto con altri script, quindi siccome non mi va di ri-editare 30000 eventi per due script nuovi... utilizzerò l'altro mio metodo ad eventi! XD Grazie comunque!! Li terrò a mente per un prossimo (ipotetico) progetto! P