-
Posts
21 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Posts posted by Sceptile
-
-
Il problema sarebbe l'eccessiva lentezza del personaggio, c'è un modo di muovere il personaggio con il mouse?
-
Hey guys,
premetto che ho davvero molta difficoltà a spiegare lo script che cerco quindi allego un' immagine che potrebbe aiutarmi.Il protagonista del gioco, nella sua camera, "cliccando" sul pc, dovrebbe poter accedere ad una specie di browser (che realizzerò successivamente, tramite eventi, con mostra immagine) dove avrà accesso a diversi "pulsanti". Ogni pulsante corrisponderà ad una determinata azione (che influenzerà variabili o altro) oppure corrisponderà ad un collegamento ad un'altra pagina del browser dove saranno presenti altri "pulsanti" con azioni diverse. Ad esempio, nell'immagine in allegato, se cliccassi su "Commenta" una variabile si dovrebbe alzare di 1, invece se cliccassi su "Statistiche Canale" dovrebbe aprirsi un'altra immagine simile ma con altri pulsanti. Esiste uno script che permette quanto descritto?
Sicuramente non sarò stato sufficientemente chiaro, quindi non esitate a chiedere altre informazioni.
Link immagine http://imgur.com/Wk6q3n3
Grazie in anticipo :) -
ora che lo dici in effetti pensandoci è vero. Quando sono in tanti a dover mangiare una torta si creano problemi e la torta oltre che buona deve essere anche bella. Il progetto se rimane cosi, senza offesa se non fossi un appassionato non gli darei manco 3 cent. Perché? Perché per prima cosa non è farina del vostro sacco e secondo ci sono millemila giochi rtp simili, perchè dovrei pagare un gioco cosi? Però alla fine le cose sono imprevedibili ed avere un inaspettato successo! Provarci è giusto se non va... non vaXD
Giochi simili?
-
Capisco. Non sarà facile ottenere i consensi, ma provate! ^ ^Tecnicamente non ce ne dovrebbe essere bisogno dato che non vengono utilizzati i veri nomi dei canali esistenti e soprattutto non sono marchi registrati...
In ogni caso meglio non rischiare ;)
-
L'idea di approfittare di questa ondata di successo di Youtube è buona. Immagino che hai pensato questo gioco anche con la speranza che almeno uno di questi youtuber lo provi dandoti un pò di notorietà.
Lo sai però che cercare di ricavarci delle somme di denaro (seppur minime o per darle in donazione) potrebbe crearti molti problemi ? :(
in quanto utilizzi la fama di altre persone (che non so se ti hanno concesso i loro diritti) che potrebbero infastidirsi e crearti casini ...
Inoltre molti youtuber quando giocano agli indie games, provano quelli gratuiti... se dovessero spendere soldi per ogni tizio che fa un gioco su di loro a pagamento sarebbero poveri ^^"
L'idea di base è proprio quella di cavalcare l'ondata di successo di Youtube ... Ovviamente verrà chiesto il consenso di tutti gli Youtubers citati (palesemente o velatamente) nel gioco.
Ah se sei uno Youtuber il gioco e gratis ;)
(Con determinate condizioni che verranno spiegate nel progetto Kickstarter)
-
Non ho ben capito... i protagonisti dovrebbero essere anonimi giusto? Cioè i personaggi inventati dovrebbero essere di fantasia con solo riferimenti o cose velate per quanto riguarda...Molti personaggi principali (alcune volte semplici comparse) saranno altri youtuber italiani (nella versione italiana) ! Ovviamente con nomi leggermente modificati (ma comprensibili) e previo consenso...
Ad esempio Crack89 (Croix89) ;)
-
Se donate forse sarebbe meglio pensare a chi ha problemi diciamo più seri che diventare una star su youtube...che dici?Siamo consapevoli che nel mondo esistono problemi ben più gravi di qualche youtuber che non riesce a raggiungere il successo ma ,essendo il nostro gioco incentrato su Youtube, ci è sembrato logico pensare a qualcosa del genere. Inoltre le nostre non saranno pure donazioni come se fossero degli enti di ricerca,essendo noi degli sviluppatori indipendenti e quindi avendo bisogno di farci conoscere credo che opteremo piuttosto per dei contest che premieranno il gameplay o la recensione migliore (ovviamente sul nostro gioco)... Ovviamente i premi non saranno cash,ma attrezzature come videocamere e microfoni
Ah,se sei uno youtuber (e soddisfi alcune condizioni) il gioco è gratis :)
-
Ah,perdono ... E' in fase di sviluppo ma non avevo idea di quale fosse la categoria giusta quindi sposta pure ;)
Comunque sì,potrai scegliere diversi sub-ruoli come ad esempio recensore buono/cattivo e blablabla...
Il buono o cattivo verrà determinato per la maggior parte dalle scelte del giocatore che andranno a influenzare una variabile chiamata "Flame" che porterà a diversi sviluppi della trama (oltre che a modificare le views e i likes dei video pubblicati)./Fine della frase più lunga della storia -
A YOUTUBER'S DREAM
NOT A QUESTION OF LIKES
Hey, check this out c:
E’ qualche mese che io ed un mio amico stiamo tentando di mettere su qualcosa di decente, dopo esserci accorti che l’Unreal Engine 4 non è la scelta migliore per un primo progetto abbiamo fatto il salto di qualità e abbiamo scelto di buttare giù qualcosa su Rpg Maker VX Ace (e magari ci scappa il remake+mobile su MV).Dopo numerosi scleri e trip di colla vinilica ci siamo chiesti :”Cosa manca nel panorama videoludico moderno?” e soprattutto “Cosa potrebbe permetterci di guadagnare abbastanza da comprarci una barca?”
Poi l’illuminazione
Signori e signori (siamo su un forum videoludico, la vedo dura che ci siano signore)…
A YOUTUBER’S DREAM
Trama
Quanti di noi almeno una volta nella vita hanno detto “Dovrei aprire un canale Youtube”?Il misterioso viaggio trascendentale che vi porterà alla scoperta del senso della vita e soprattutto vi regalerà domande esistenziali come ”Perché ho buttato 5€ (poi ci arriviamo) per questo schifo?” inizia con il vostro personaggio in una soffitta polverosa. Lì, tra vecchi fogli di giornale e tileset ASSOLUTAMENTE NON RUBATI, vedete una telecamera…
Da qui parte la scelta fondamentale che influenzerà il resto della trama: “Che genere di youtuber siete?”
Per mettere d’accordo tutti i fanboy della galassia (sì, ora potete lasciare i forconi e le torce) abbiamo voluto raggruppare le tipologie di youtuber in :1)Gamer
In principio ,su Youtube , erano i gattini… poi arrivarono i gameplay a ristabilire l’ordine.
Vesti i panni di un giocatore kick-ass tra conferenze videoludiche e tornei internazionali.
2)Recensore
Ah il buon vecchio Yotobi ha una categoria tutta per lui. Perché non diventare un ironico film critic e scegliere se portare il nuovo Star Wars nell’olimpo dei film hollywoodiani oppure smontarlo e gettarlo in pasto ai meme
3)Fashion Blogger
Coff Coff Francesco Sole (E’ un fashion blogger?No?)
Tutti abbiamo quel gigantesco scatolone pieno di trucchi in casa e ci ripetiamo “Dovrei fare una recensione del mio nuovo mascara!”… Ah già
4)Cover Band
Wanna Be Kurt Cobain?Dal vostro piccolo scantinato al Disco d’oro il passo è breve, soprattutto se in mezzo c’è della cocaina
5)Esperimenti sociali
Fa sempre ridere qualcuno che fa finta di scorreggiare sui passanti… o forse è illegale
Passeggiate per la vostra città importunando i poliziotti o bestemmiando in chiesa con una telecamera nascosta
FANTASTICO
6)Comic Video
Boh,solo 5 categorie non era il massimo quindi TAA-DAN: freddure brutte e mini-video su Facebook c:
Tramite le vostre scelte influenzerete la carriera del vostro alter-ego e lo porterete al successo o alla rovina in quella landa desolata che è Youtube. (I nostri legali ci consigliano di dire che NON conosciamo e NON abbiamo mai giocato ad un gioco Telltale)Il tutto è ambientato nella moderna Youtube Italia (e magari nelle altre community estere in base alla lingua scelta) con continui riferimenti ai protagonisti del palcoscenico della Tv 2.0 (Pioveranno denunce)
Le nostre meschine intenzioni sono di portare il nostro capolavoro su Kickstarter e successivamente su Steam perché amiamo molto i Rolex e le Maserati, ma prima gradiremmo avere un piccolo feedback da voi ner… ehm videogiocatori esperti.
Grazie in anticipoIn fede
CEO della Asinus Games e futuro sovrano del mondo
Dario Fumarola(Gran parte dei ricavati verrà utilizzata per finanziare i piccoli youtuber con talento da vendere che purtroppo, magari per mancanza di mezzi, non riescono ad emergere. Ma questo verrà spiegato meglio nella campagna Kickstarter)
Qualche Screenshot:
http://i.imgur.com/61VTCIo.jpg
http://i.imgur.com/qRjdwgM.pnghttp://i.imgur.com/8eXDmiG.png
http://i.imgur.com/gp8q8mW.jpg
-
Salve a tutti,
esiste un modo per rendere questi due script compatibili fra loro? Oppure esistono altri message system compatibili? (Ho già provato con il Lune)[sCUSATE PER IL REPOST MA E' ABBASTANZA URGENTE]
(Sistema di scelte)
#------------------------------------------------------------------------------#
# Galv's Visual Novel Choices
#------------------------------------------------------------------------------#
# For: RPGMAKER VX ACE
# Version 1.9
#------------------------------------------------------------------------------#
# 2013-01-16 - Version 1.9 - Added Y offset for choice window
# 2012-11-28 - Version 1.8 - Z level setting added
# 2012-11-28 - Version 1.7 - Added compatability for some cursor scripts
# 2012-11-28 - Version 1.6 - Fixed a bug that could crash the game.
# 2012-11-28 - Version 1.5 - Added offset to change postion of cursor x and y
# 2012-11-28 - Version 1.4 - Fixed z levels and made cursor use an image
# 2012-11-27 - Version 1.3 - Fixed a bug with cancel choice selection
# 2012-11-27 - Version 1.2 - added a switch to disable script effects
# 2012-11-27 - Version 1.1 - added ability to use different image per choice
# - added a couple more options
# 2012-11-27 - Version 1.0 - release
#------------------------------------------------------------------------------#
# This script overwrites the default "Show Choices" list. The choices are
# changed so they display centered on the screen with a graphic behind each
# of them. Made with visual novel choice selection in mind.
#------------------------------------------------------------------------------#
# INSTRUCTIONS:
# Copy the graphic from the demo /Graphics/System into your project.
# Copy the script into your script list, below Materials and above Main
#
# Some setup options below, most only need to be changed if you use your own
# custom choice image.
#------------------------------------------------------------------------------#
# Codes:
#------------------------------------------------------------------------------#
# Most of the usual codes that work in messages should work in choices.
# (eg. \V[x], \N[x], \C[x], etc. Look at message tooltip to know more.)
#
# A new one has been added so you can change the background image for separate
# choice options.
#
# \B[x]
#
# This works by adding the number x (as you put in the code above) to the end
# of the CHOICE IMAGE file name. For example, the default choice image is:
# "Choice.png" located in /Graphics/System/. If you put the code anywhere in
# a choice box: \B[3] it will look for "Choice3.png" image in the same
# location.
#------------------------------------------------------------------------------#
($imported ||= {})["Galvs_Image_Choices"] = true
module Galv_Choice
#------------------------------------------------------------------------------#
# SCRIPT SETUP OPTIONS
#------------------------------------------------------------------------------#
CURSOR_IMAGE = "Cursor" # Images used to determine which option you select
CURSOR_OPACITY = 255 # Opacity of the cursor
CURSOR_Y_OFFSET = 0 # Nudge cursor position vertically
CURSOR_X_OFFSET = 0 # Nudge cursor position horizontally
CHOICE_IMAGE = "Choice" # Image for each choice located in /Graphics/System
IMAGE_Y_OFFSET = 3 # Nudge your choice image vertically if needed
IMAGE_OPACITY = 215 # The opacity of the image
CHOICE_HEIGHT = 45 # How tall each choice.
CHOICE_ITEM_Y = 2 # Offset for choice item text
CENTER_TEXT = true # left aligned if false, centered if true
DISABLE_SWITCH = 1 # Turn this switch ON to disable this script
CHOICES_Y = 0 # Y offset to move choice window up or down.
# useful if you use a script that creates a namebox
CHOICES_Z = 50 # The z value of the choices window. Try changing it
# if pictures or other scripts appear over or under
# the choices window to how you like.
#------------------------------------------------------------------------------#
OTHER_Y_OFFSET = 12 # May fix other cursor scripts positioning
#------------------------------------------------------------------------------#
# SCRIPT SETUP OPTIONS
#------------------------------------------------------------------------------#
end
class Window_ChoiceList < Window_Command
alias galv_choice_initialize initialize
def initialize(message_window)
galv_choice_initialize(message_window)
self.z = Galv_Choice::CHOICES_Z
end
def start
@index = 0
setup_choices
make_cursor
refresh
open
activate
update_placement
update_bgs
refresh
select(0)
end
def make_cursor
return if $game_switches[Galv_Choice::DISABLE_SWITCH]
@cursor_sprite = Sprite.new
@cursor_sprite.bitmap = Cache.system(Galv_Choice::CURSOR_IMAGE)
end
def setup_choices
@choice_sprite = []
if !$game_switches[Galv_Choice::DISABLE_SWITCH]
self.opacity = 0
get_widths
else
self.opacity = 255
end
end
alias galv_choice_update_placement update_placement
def update_placement
if $game_switches[Galv_Choice::DISABLE_SWITCH]
galv_choice_update_placement
else
self.width = [max_choice_width + 12, 96].max + padding * 4
self.width = [width, Graphics.width].min
self.height = contents_height + Galv_Choice::CHOICE_HEIGHT - 10
self.x = (Graphics.width - width) / 2
if @message_window.openness < 100
self.y = Graphics.height - contents_height + item_height / 2
elsif @message_window.y >= Graphics.height / 2
self.y = @message_window.y - contents_height + item_height / 2 - Galv_Choice::CHOICES_Y
else
self.y = @message_window.y + @message_window.height + item_height / 2 + Galv_Choice::CHOICES_Y
end
end
end
alias galv_choice_contents_height contents_height
def contents_height
if $game_switches[Galv_Choice::DISABLE_SWITCH]
galv_choice_contents_height
else
(item_max + 1) * item_height
end
end
def draw_item(index)
rect = item_rect_for_text(index)
draw_text_ex(rect.x, rect.y, command_name(index))
if !$game_switches[Galv_Choice::DISABLE_SWITCH]
draw_bgs(index)
end
end
def item_rect_for_text(index)
rect = item_rect(index)
if $game_switches[Galv_Choice::DISABLE_SWITCH]
rect.x += 4
rect.width -= 8
rect
else
if Galv_Choice::CENTER_TEXT
rect.x = (max_choice_width - @text_sizes.collect {|s| text_size(s).width }[index] + (padding * 3)) / 2
else
rect.x += 4
end
rect.width -= 8
rect.y += Galv_Choice::CHOICE_ITEM_Y
rect
end
end
def get_widths
@text_sizes = []
@choice_background = []
$game_message.choices.each_with_index do |c,i|
@text_sizes = esc_characters(c,i)
end
end
def esc_characters(text,index)
result = text.to_s.clone
result.gsub!(/\\/) { "\e" }
result.gsub!(/\e\e/) { "\\" }
result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
result.gsub!(/\eN\[(\d+)\]/i) { $game_actors[$1.to_i].name}
result.gsub!(/\eP\[(\d+)\]/i) {
if $game_party.members[$1.to_i].nil?
""
else
$game_party.members[$1.to_i].name
end
}
result.gsub!(/\eG/i) { Vocab::currency_unit }
result.gsub!(/\eC\[(\d+)\]/i) { "" }
result.gsub!(/\eI\[(\d+)\]/i) { " " }
result.gsub!(/\eB\[(\d+)\]/i) { @choice_background[index] = $1.to_i }
result.gsub!(/\eB\[(\d+)\]/i) { "" }
result
end
def convert_escape_characters(text)
result = text.to_s.clone
result.gsub!(/\\/) { "\e" }
result.gsub!(/\e\e/) { "\\" }
result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
result.gsub!(/\eN\[(\d+)\]/i) { actor_name($1.to_i) }
result.gsub!(/\eP\[(\d+)\]/i) { party_member_name($1.to_i) }
result.gsub!(/\eG/i) { Vocab::currency_unit }
result.gsub!(/\eB\[(\d+)\]/i) { "" }
result
end
def item_height
return line_height if $game_switches[Galv_Choice::DISABLE_SWITCH]
return Galv_Choice::CHOICE_HEIGHT
end
def item_rect(index)
rect = Rect.new
rect.width = item_width
rect.height = item_height - 15
rect.height += 15 if $game_switches[Galv_Choice::DISABLE_SWITCH]
rect.x = index % col_max * (item_width + spacing)
rect.y = index / col_max * item_height
rect
end
def draw_bgs(index)
return if @choice_sprite[index] != nil
if @choice_background[index].nil?
b = ""
else
b = @choice_background[index]
end
@choice_sprite[index] = Sprite.new
@choice_sprite[index].bitmap = Cache.system(Galv_Choice::CHOICE_IMAGE + b.to_s)
@choice_sprite[index].x = index % col_max * (item_width + spacing)
@choice_sprite[index].y = index / col_max * item_height
@choice_sprite[index].z = self.z - 2
end
def update_bgs
@choice_sprite.each_with_index do |s,i|
s.y = self.y + i * Galv_Choice::CHOICE_HEIGHT + Galv_Choice::IMAGE_Y_OFFSET
s.x = (Graphics.width - s.width) / 2
s.opacity = Galv_Choice::IMAGE_OPACITY
end
end
def dispose_bgs
@choice_sprite.each_with_index do |s,i|
s.dispose
s.bitmap.dispose
end
if !$game_switches[Galv_Choice::DISABLE_SWITCH]
@cursor_sprite.dispose
@cursor_sprite.bitmap.dispose
@choice_sprite = []
end
end
alias galv_choice_call_ok_handler call_ok_handler
def call_ok_handler
galv_choice_call_ok_handler
dispose_bgs
end
alias galv_choice_call_cancel_handler call_cancel_handler
def call_cancel_handler
galv_choice_call_cancel_handler
dispose_bgs
end
def update_cursor
if $game_switches[Galv_Choice::DISABLE_SWITCH]
super
else
cursor_rect.empty
return if @cursor_sprite.nil? || @choice_sprite.nil?
if @index < 0
@cursor_sprite.opacity = 0
else
@cursor_sprite.opacity = Galv_Choice::CURSOR_OPACITY
@cursor_sprite.x = @choice_sprite[@index].x + Galv_Choice::CURSOR_X_OFFSET
@cursor_sprite.y = @choice_sprite[@index].y + Galv_Choice::CURSOR_Y_OFFSET
@cursor_sprite.z = self.z - 1
cursor_rect.y = (item_height * @index) + Galv_Choice::OTHER_Y_OFFSET
end
end
end
end # Window_ChoiceList < Window_Command(XS Message system)
#==============================================================================
# XS - Message
# Author: Nicke
# Created: 08/11/2012
# Edited: 19/11/2012
# Version: 1.0b
#==============================================================================
# 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.
#==============================================================================
# Requires: XS - Core Script.
#==============================================================================
# A message system based on using variables ingame.
# If the variable has the value 0 the default value will take place.
# To setup a simple message dialog do as you would normally do when adding
# text in events but before it set the variables you want to change.
#
# When changing width and height you should know that height is visible
# line numbers which means the numbers 1 to 4 is prefered to use.
#
# Example:
# You could set the width to 544 and height to 4 which is pretty much how
# the default message window looks like.
#
# This script also support sound effect to be played each time a character is
# processed. Can be tweaked in the settings.
#
# When setting variables for bold, shadow, namebox and skin etc. Remember to use
# the script area in the variable.
#
# If I wanted to enable bold and setting a custom skin I would do this:
# Set the value "true" in the script section for variable 41.
# Set the value "Window" in the script section for variable 44.
#
# Note: When changing the message window skin you must use this method after
# setting the variable in order to properly update to the new skin:
# SceneManager.scene.set_message_skin
#
# Example:
# So after setting variable 44 (default one) to "Window3" call that method.
#
# *** Only for RPG Maker VX Ace. ***
#==============================================================================
($imported ||= {})["XAIL-MESSAGE-SYSTEM"] = true
module XAIL
module MSG
#--------------------------------------------------------------------------#
# * Settings
#--------------------------------------------------------------------------#
# Set the window variables.
# WINDOW_VAR = [width, height, padding, x, y, delay,
# font_name, font_size, font_color, outline, bold, shadow, namebox, skin]
WINDOW_VAR = [31,32,33,34,35,36,37,38,39,40,41,42,43,44]
# Set the window open/close animation in frames.
# WINDOW_ANIMATE = [openness, closeness]
WINDOW_ANIMATE = [15, 15]
# Name box options.
# NAME = [font, size, color, bold, shadow]
NAME = [["Verdana", "Anklada™"], 14, Color.new(255,225,235,225), true, true]
# Set the sound for when the characters are processing.
# The sound effect will be played each time the occurence is met.
# From the default it will happen every odd processed character.
# Can be set to nil to disable.
# SE = [occurence, name, vol, pitch]
SE = [2, "Decision1", 60, 150]
# Set the animation options for face window.
# For type only :fade exists at the moment.
# ANIM_FACE = [enabled, type, animation_speed_in, animation_speed_out]
ANIM_FACE = [true, :fade, 12, 8]
# Set the animation options for name window.
# For type only :fade exists at the moment.
# ANIM_NAME = [animation_speed_in, animation_speed_out]
ANIM_NAME = [true, :fade, 12, 8]
end
end
# *** Don't edit below unless you know what you are doing. ***
#==============================================================================#
# ** Error Handler
#==============================================================================#
unless $imported["XAIL-XS-CORE"]
# // Error handler when XS - Core is not installed.
msg = "The script %s requires the latest version of XS - Core in order to function properly."
name = "XS - Message"
msgbox(sprintf(msg, name))
exit
end
#==============================================================================#
# ** Window_Base
#==============================================================================#
class Window_Base < Window
alias xail_msg_winbase_upd_open update_open
def update_open(*args, &block)
# // Method to update openness
# This should only occur when $game_message is visible.
if $game_message.visible
self.openness += XAIL::MSG::WINDOW_ANIMATE[0]
self.opacity = self.openness unless self.opacity == 0
self.back_opacity = self.openness unless self.opacity == 0
@opening = false if open?
else
xail_msg_winbase_upd_open(*args, &block)
end
end
alias xail_msg_winbase_upd_close update_close
def update_close(*args, &block)
# // Method override to update closeness.
# This should only occur when $game_message is visible.
if $game_message.visible
self.openness -= XAIL::MSG::WINDOW_ANIMATE[1]
self.opacity = self.openness unless self.opacity == 0
self.back_opacity = self.openness unless self.opacity == 0
@closing = false if close?
else
xail_msg_winbase_upd_close(*args, &block)
end
end
end
#==============================================================================#
# ** Window_Message_Face
#==============================================================================#
class Window_Message_Face < Window_Base
def initialize(x, y, width, height)
# // Method to initialize.
super(x, y, width, height)
skin = $game_variables[XAIL::MSG::WINDOW_VAR[13]] == 0 ? "Window" : $game_variables[XAIL::MSG::WINDOW_VAR[13]]
self.windowskin = Cache.system(skin)
refresh
end
def refresh
# // Method to refresh.
contents.clear
r = Rect.new(0, 0, width, height)
r2 = Rect.new(2, 2, width-28, height-28)
contents.fill_rect(r, Color.new(75,125,135,245))
contents.gradient_fill_rect(r2, Color.new(125,125,125,255), Color.new(0,0,0,255), false)
draw_face($game_message.face_name, $game_message.face_index, 4, 4)
end
end
#==============================================================================#
# ** Window_Message_Name
#==============================================================================#
class Window_Message_Name < Window_Base
def initialize(name, x, y, width, height)
# // Method to initialize.
super(x, y, width, height)
skin = $game_variables[XAIL::MSG::WINDOW_VAR[13]] == 0 ? "Window" : $game_variables[XAIL::MSG::WINDOW_VAR[13]]
self.windowskin = Cache.system(skin)
@name = name
refresh
end
def standard_padding
# // Method to set standard padding
return 4
end
def name=(name)
# // Method to refresh and set name.
return if @name == name
@name = name
refresh
end
def refresh
# // Method to refresh.
contents.clear
draw_font_text(@name, 0, 0, contents_width, 1, XAIL::MSG::NAME[0], XAIL::MSG::NAME[1], XAIL::MSG::NAME[2])
end
end
#==============================================================================#
# ** Window_Message
#==============================================================================#
class Window_Message < Window_Base
def initialize
# // Method override initialize for window message.
super(0, 0, window_width, window_height)
self.z = 200
self.openness = 0
create_all_windows
create_back_bitmap
create_back_sprite
clear_instance_variables
set_window_skins
end
def set_window_skins
# // Method to set window skins.
@gold_window.windowskin = Cache.system(get_var(XAIL::MSG::WINDOW_VAR[13], :skin))
@choice_window.windowskin = Cache.system(get_var(XAIL::MSG::WINDOW_VAR[13], :skin))
@number_window.windowskin = Cache.system(get_var(XAIL::MSG::WINDOW_VAR[13], :skin))
@item_window.windowskin = Cache.system(get_var(XAIL::MSG::WINDOW_VAR[13], :skin))
end
#~ alias xail_msg_winmsg_create_all_windows create_all_windows
#~ def create_all_windows(*args, &block)
#~ # // Method to create all windows.
#~ xail_msg_winmsg_create_all_windows(*args, &block)
#~ @choice_window = Window_ChoiceList.new(self)
#~ @number_window = Window_NumberInput.new(self)
#~ @item_window = Window_KeyItem.new(self)
#~ @choice_window.windowskin
#~ end
def window_width
# // Method override to return width.
get_var(XAIL::MSG::WINDOW_VAR[0], :width)
end
def window_height
# // Method override to return height.
fitting_height(get_var(XAIL::MSG::WINDOW_VAR[1], :height))
end
def standard_padding
# // Method to return the padding.
get_var(XAIL::MSG::WINDOW_VAR[2], :padding)
end
def window_x
# // Method to return x value of window.
get_var(XAIL::MSG::WINDOW_VAR[3], :win_x)
end
def window_y
# // Method to return y value of window.
get_var(XAIL::MSG::WINDOW_VAR[4], :win_y)
end
def get_var(var, type)
# // Method to return variable value if conditions met.
unless var.nil? or $game_variables[var] == 0
return $game_variables[var]
else
case type
when :width ; return Graphics.width
when :height ; return visible_line_number
when :padding ; return 12
when :win_x ; return 0
when :win_y ; return 0
when :wait ; return 0
when :font_name ; return Font.default_name
when :font_size ; return Font.default_size
when :font_color ; return Font.default_color
when :font_out_color ; return Font.default_out_color
when :font_bold ; return Font.default_bold
when :font_shadow ; return Font.default_shadow
when :name ; return ""
when :skin ; return "Window"
end
end
end
alias xail_msg_winmsg_upd_placement update_placement
def update_placement(*args, &block)
# // Method to update placement.
xail_msg_winmsg_upd_placement(*args, &block)
self.width = window_width
self.height = window_height
self.x = window_x
self.y = window_y
create_contents
end
def fiber_main
# // Method override for fiber main.
$game_message.visible = true
update_background
update_placement
loop do
process_all_text if $game_message.has_text?
process_input
$game_message.clear
@gold_window.close
dispose_face
dispose_name
Fiber.yield
break unless text_continue?
end
close_and_wait
$game_message.visible = false
@fiber = nil
end
def draw_message_face
# // Method to draw face window.
unless $game_message.face_name.empty?
x = window_x - 44
@face_window = Window_Message_Face.new(x, window_y, 128, 128)
@face_window.z = 201
@face_window.opacity = 0
if XAIL::MSG::ANIM_FACE[0]
case XAIL::MSG::ANIM_FACE[1]
when :fade
@face_window.contents_opacity = 0
fade(XAIL::MSG::ANIM_FACE[2], @face_window, :in)
end
end
end
end
def draw_message_name
# // Method to draw name window.
name = get_var(XAIL::MSG::WINDOW_VAR[12], :name)
unless name == ""
w = text_size(name).width + 24
x = window_x + 16
@name_window = Window_Message_Name.new(name, x, window_y - 31, w, 34)
@name_window.z = 199
if XAIL::MSG::ANIM_NAME[0]
case XAIL::MSG::ANIM_NAME[1]
when :fade
@name_window.opacity = @name_window.contents_opacity = 0
fade(XAIL::MSG::ANIM_NAME[2], @name_window, :in, true, true)
end
end
end
end
alias xail_msg_winmsg_process_normal_character process_normal_character
def process_normal_character(c, pos)
# // Method to set a wait time for each processed character.
# This will also play a SE based on if the pos is a odd number.
xail_msg_winmsg_process_normal_character(c, pos)
wait(get_var(XAIL::MSG::WINDOW_VAR[5], :wait))
if (pos[:x] % XAIL::MSG::SE[0] > 0)
Sound.play(XAIL::MSG::SE[1], XAIL::MSG::SE[2], XAIL::MSG::SE[3]) unless XAIL::MSG::SE.nil?
end
end
alias xail_msg_winmsg_open_and_wait open_and_wait
def open_and_wait(*args, &block)
# // Method for open and wait.
xail_msg_winmsg_open_and_wait(*args, &block)
draw_message_face ; draw_message_name
end
def new_page(text, pos)
# // Method override for new page.
contents.clear
contents.font.name = get_var(XAIL::MSG::WINDOW_VAR[6], :font_name)
contents.font.size = get_var(XAIL::MSG::WINDOW_VAR[7], :font_size)
contents.font.color = get_var(XAIL::MSG::WINDOW_VAR[8], :font_color)
contents.font.out_color = get_var(XAIL::MSG::WINDOW_VAR[9], :font_out_color)
contents.font.bold = eval(get_var(XAIL::MSG::WINDOW_VAR[10], :font_bold)) unless $game_variables[XAIL::MSG::WINDOW_VAR[10]] == 0
contents.font.shadow = eval(get_var(XAIL::MSG::WINDOW_VAR[11], :font_shadow)) unless $game_variables[XAIL::MSG::WINDOW_VAR[11]] == 0
pos[:x] = new_line_x
pos[:y] = 0
pos[:new_x] = new_line_x
pos[:height] = calc_line_height(text)
clear_flags
end
def new_line_x
# // Method for new line x pos.
$game_message.face_name.empty? ? 0 : @face_window.width / 2 + 4
end
def input_choice
# // Method to start the input choice.
@choice_window.start
skin = $game_variables[XAIL::MSG::WINDOW_VAR[13]] == 0 ? "Window" : $game_variables[XAIL::MSG::WINDOW_VAR[13]]
@choice_window.windowskin = Cache.system(skin)
@choice_window.opacity = 255
Fiber.yield while @choice_window.active
end
def input_number
# // Method to start the input number.
@number_window.start
skin = $game_variables[XAIL::MSG::WINDOW_VAR[13]] == 0 ? "Window" : $game_variables[XAIL::MSG::WINDOW_VAR[13]]
@number_window.windowskin = Cache.system(skin)
@number_window.opacity = 255
Fiber.yield while @number_window.active
end
def fade(max, window, type, con_op = true, op = false)
# // Method to fade in/out the windows opacity and/or contents_opacity.
return if window.is_a?(Array)
case type
when :in
for i in 1..max
Graphics.update
window.contents_opacity = i * (255 / max) if con_op
window.opacity = i * (255 / max) if op
end
when :out
for i in 1..max
Graphics.update
window.contents_opacity = 255 - i * (255 / max) if con_op
window.opacity = 255 - i * (255 / max) if op
end
end
end
def dispose_face
# // Method to dispose face window.
unless @face_window.nil? or @face_window.is_a?(Array)
if XAIL::MSG::ANIM_FACE[0]
case XAIL::MSG::ANIM_FACE[1]
when :fade
fade(XAIL::MSG::ANIM_FACE[3], @face_window, :out)
end
end
@face_window = nil, @face_window.dispose
end
end
def dispose_name
# // Method to dispose name window.
unless @name_window.nil? or @name_window.is_a?(Array)
if XAIL::MSG::ANIM_NAME[0]
case XAIL::MSG::ANIM_NAME[1]
when :fade
fade(XAIL::MSG::ANIM_NAME[3], @name_window, :out)
end
end
@name_window = nil, @name_window.dispose
end
end
end
#==============================================================================#
# ** Scene_Map
#==============================================================================#
class Scene_Map < Scene_Base
def set_message_skin
# // Method to set message window skin.
skin = $game_variables[XAIL::MSG::WINDOW_VAR[13]] == 0 ? "Window" : $game_variables[XAIL::MSG::WINDOW_VAR[13]]
@message_window.windowskin = Cache.system(skin)
end
end # END OF FILE
#=*==========================================================================*=#
# ** END OF FILE
#=*==========================================================================*=#(Seconda parte del message system)
#==============================================================================
# XaiL System - Core
# Author: Nicke
# Created: 07/01/2012
# Edited: 08/10/2013
# Version: 2.1f
#==============================================================================
# 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.
#
# Core script for XaiL System.
# Caution! This needs to be located before any other XS scripts.
#
# *** Only for RPG Maker VX Ace. ***
#==============================================================================
($imported ||= {})["XAIL-XS-CORE"] = true
module Colors
#--------------------------------------------------------------------------#
# * Colors
#--------------------------------------------------------------------------#
White = Color.new(255,255,255)
LightRed = Color.new(255,150,150)
LightGreen = Color.new(150,255,150)
LightBlue = Color.new(150,150,255)
DarkYellow = Color.new(225,225,20)
Alpha = Color.new(0,0,0,128)
AlphaMenu = 100
end
module XAIL
module CORE
#--------------------------------------------------------------------------#
# * Settings
#--------------------------------------------------------------------------#
# Graphics.resize_screen(width, height )
Graphics.resize_screen(544,416)
# FONT DEFAULTS:
Font.default_name = ["VL Gothic"]
Font.default_size = 20
Font.default_bold = false
Font.default_italic = false
Font.default_shadow = true
Font.default_outline = true
Font.default_color = Colors::White
Font.default_out_color = Colors::Alpha
# USE_TONE = true/false:
# Window tone for all windows ingame. Default: true.
USE_TONE = false
# SAVE
SAVE_MAX = 20 # Default 16.
SAVE_FILE_VIS = 4 # Default 4.
# JAPANESE = true/false
JAPANESE = false
end
end
# *** Don't edit below unless you know what you are doing. ***
#==============================================================================#
# ** Game_System
#==============================================================================#
class Game_System
# // Method to determine japanese game.
def japanese? ; return XAIL::CORE::JAPANESE ; end
end
#==============================================================================#
# ** String
#==============================================================================#
class String
def to_class(parent = Kernel)
# // Method to convert string to class.
chain = self.split "::"
klass = parent.const_get chain.shift
return chain.size < 1 ? (klass.is_a?(Class) ? klass : nil) : chain.join("::").to_class(klass)
rescue
nil
end
def cap_words
# // Method to capitalize every word.
self.split(' ').map {|w| w.capitalize }.join(' ')
end
def slice_char(char)
# // Method to slice char.
self.split(char).map {|w| w.sub(char, " ") }.join(" ")
end
end
#==============================================================================#
# ** Vocab
#==============================================================================#
class << Vocab
def xparam(id)
# // Method to return xparam name.
case id
when 0 ; "Hit Chance"
when 1 ; "Evasion"
when 2 ; "Critical Chance"
when 3 ; "Critical Evasion"
when 4 ; "Magic Evasion"
when 5 ; "Magic Reflection"
when 6 ; "Counter Attack"
when 7 ; "HP Regeneration"
when 8 ; "MP Regeneration"
when 9 ; "TP Regeneration"
end
end
end
#==============================================================================
# ** Sound
#==============================================================================
class << Sound
def play(name, volume, pitch, type = :se)
# // Method to play a sound. If specified name isn't valid throw an error.
case type
when :se ; RPG::SE.new(name, volume, pitch).play rescue valid?(name)
when :me ; RPG::ME.new(name, volume, pitch).play rescue valid?(name)
when :bgm ; RPG::BGM.new(name, volume, pitch).play rescue valid?(name)
when :bgs ; RPG::BGS.new(name, volume, pitch).play rescue valid?(name)
end
end
def valid?(name)
# // Method to raise error if specified sound name is invalid.
msgbox("Error. Unable to find sound file: " + name)
exit
end
end
#==============================================================================
# ** DataManager
#==============================================================================
class << DataManager
def savefile_max
# // Method override, save file max.
return XAIL::CORE::SAVE_MAX
end
end
#==============================================================================
# ** SceneManager
#==============================================================================
class << SceneManager
def call_ext(scene_class, args = nil)
# // Method to call a scene with arguments.
@stack.push(@scene)
@scene = scene_class.new(args)
end
end
#==============================================================================
# ** Scene_File
#==============================================================================
class Scene_File < Scene_MenuBase
def visible_max
# // Method override, visible_max for save files.
return XAIL::CORE::SAVE_FILE_VIS
end
end
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# Importing font fix that will remove weird characters.
# Adding new methods such as new gauge, actor param, font text, icon drawing,
# big icon drawing and a line with a shadow.
#==============================================================================
class Window_Base < Window
# // Importing Custom font fix. (Credit Lone Wolf).
alias :process_normal_character_vxa :process_normal_character
def process_normal_character(c, pos)
return unless c >= ' '
process_normal_character_vxa(c, pos)
end unless method_defined? :process_normal_character
def draw_text_ex_no_reset(x, y, text)
# // Method to draw ex text without resetting the font.
text = convert_escape_characters(text)
pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
process_character(text.slice!(0, 1), text, pos) until text.empty?
end
alias xail_core_winbase_upt_tone update_tone
def update_tone(*args, &block)
# // Method to change tone of the window.
return unless XAIL::CORE::USE_TONE
xail_core_winbase_upt_tone(*args, &block)
end
def draw_gauge_ex(x, y, width, height, rate, color1, color2)
# // Method to draw a gauge.
fill_w = (width * rate).to_i
gauge_y = y + line_height - 8
contents.fill_rect(x, gauge_y, width + 1, height + 1, Color.new(255,255,255,64))
contents.fill_rect(x, gauge_y, width, height, Color.new(0,0,0,100))
contents.gradient_fill_rect(x, gauge_y, fill_w, height, color1, color2)
end
def draw_actor_param_gauge(actor, x, y, width, param_id, font, size, bar_color1, bar_color2, txt_color1, txt_color2)
# // Method to draw actor parameters with a gauge.
case param_id
when 2 ; param_rate = actor.param(2) / actor.param_max(2).to_f
when 3 ; param_rate = actor.param(3) / actor.param_max(3).to_f
when 4 ; param_rate = actor.param(4) / actor.param_max(4).to_f
when 5 ; param_rate = actor.param(5) / actor.param_max(5).to_f
when 6 ; param_rate = actor.param(6) / actor.param_max(6).to_f
when 7 ; param_rate = actor.param(7) / actor.param_max(7).to_f
end
contents.font.name = font
contents.font.size = size
contents.font.bold = true
contents.font.shadow = false
draw_gauge_ex(x, y - 14, width, 20, param_rate, bar_color1, bar_color2)
contents.font.color = txt_color1
draw_text(x + 10, y, 120, line_height, Vocab::param(param_id))
contents.font.color = txt_color2
draw_text(x + width - 38, y, 36, line_height, actor.param(param_id), 2)
reset_font_settings
end
def draw_actor_xparam_gauge(actor, x, y, width, xparam_id, font, size, bar_color1, bar_color2, txt_color1, txt_color2)
# // Method to draw actor xparameters with a gauge.
case xparam_id
when 0
xparam_rate = actor.xparam(0) / 100.to_f
xparam_name = Vocab.xparam(0)
when 1
xparam_rate = actor.xparam(1) / 100.to_f
xparam_name = Vocab.xparam(1)
when 2
xparam_rate = actor.xparam(2) / 100.to_f
xparam_name = Vocab.xparam(2)
when 3
xparam_rate = actor.xparam(3) / 100.to_f
xparam_name = Vocab.xparam(3)
when 4
xparam_rate = actor.xparam(4) / 100.to_f
xparam_name = Vocab.xparam(4)
when 5
xparam_rate = actor.xparam(5) / 100.to_f
xparam_name = Vocab.xparam(5)
when 6
xparam_rate = actor.xparam(6) / 100.to_f
xparam_name = Vocab.xparam(6)
when 7
xparam_rate = actor.xparam(7) / 100.to_f
xparam_name = Vocab.xparam(7)
when 8
xparam_rate = actor.xparam(8) / 100.to_f
xparam_name = Vocab.xparam(8)
when 9
xparam_rate = actor.xparam(9) / 100.to_f
xparam_name = Vocab.xparam(9)
end
contents.font.name = font
contents.font.size = size
contents.font.bold = true
contents.font.shadow = false
draw_gauge_ex(x, y - 14, width, 20, xparam_rate, bar_color1, bar_color2)
contents.font.color = txt_color1
draw_text(x + 10, y, 120, line_height, xparam_name)
contents.font.color = txt_color2
draw_text(x + width - 38, y, 36, line_height, "#{actor.xparam(xparam_id)}%", 2)
reset_font_settings
end
def draw_line_ex(x, y, color, shadow)
# // Method to draw a horizontal line with a shadow.
line_y = y + line_height / 2 - 1
contents.fill_rect(x, line_y, contents_width, 2, color)
line_y += 1
contents.fill_rect(x, line_y, contents_width, 2, shadow)
end
def draw_box(x, y, width, height, color, shadow)
# // Method to draw a box with shadow.
contents.fill_rect(x, y, width, height, color)
x += 1
y += 1
contents.fill_rect(x, y, width, height, shadow)
end
def draw_vertical_line_ex(x, y, color, shadow)
# // Method to draw a vertical line with a shadow.
line_x = x + line_height / 2 - 1
contents.fill_rect(line_x, y, 2, contents_height, color)
line_x += 1
contents.fill_rect(line_x, y, 2, contents_height, shadow)
end
def draw_icons(icons, alignment, x = 0, y = 0, offset_icon = [])
# // Method to draw icons in a horizonal or vertical alignment.
icons.each {|icon|
next if icon.nil?
# // If included in offset do extra spacing.
offset_icon.each {|offset|
if icon == offset
y += line_height * 1 if alignment == :vertical
x += line_height * 1 if alignment == :horizontal
end
}
draw_icon(icon.nil? ? nil : icon, x.nil? ? 0 : x, y.nil? ? 0 : y) rescue nil
y += line_height if alignment == :vertical
x += line_height if alignment == :horizontal
}
end
def draw_big_icon(icon, x, y, width, height, opacity = 255)
# // Method to draw a big icon.
bitmap = Cache.system("Iconset")
rect = Rect.new(icon % 16 * 24, icon / 16 * 24, 24, 24)
rect2 = Rect.new(x, y, width, height)
contents.stretch_blt(rect2, bitmap, rect, opacity)
end
def draw_font_text(text, x, y, width, alignment, font, size, color, bold = true, shadow = true)
# // Method to draw font text.
contents.font.name = font
contents.font.size = size
contents.font.color = color
contents.font.bold = bold
contents.font.shadow = shadow
contents.font.out_color = Color.new(0,0,0,255)
draw_text(x, y, width, calc_line_height(text), text, alignment)
reset_font_settings
end
def draw_font_text_ex(text, x, y, font, size, color, bold = true, shadow = true)
# // Method to draw font text ex.
contents.font.name = font
contents.font.size = size
contents.font.color = color
contents.font.bold = bold
contents.font.shadow = shadow
contents.font.out_color = Color.new(0,0,0,255)
text = convert_escape_characters(text)
pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
process_character(text.slice!(0, 1), text, pos) until text.empty?
reset_font_settings
end
end
#==============================================================================#
# ** Window_Selectable
#------------------------------------------------------------------------------
# Adding support for pageleft and pageright for window selectable.
#==============================================================================#
class Window_Selectable < Window_Base
def cursor_pageright ; end
def cursor_pageleft ; end
alias xail_core_winselect_process_cursor_move process_cursor_move
def process_cursor_move(*args, &block)
# // Method to process cursor movement.
xail_core_winselect_process_cursor_move(*args, &block)
cursor_pageright if !handle?(:pageright) && Input.trigger?(:RIGHT)
cursor_pageright if !handle?(:pageleft) && Input.trigger?(:LEFT)
end
alias xail_core_winselect_process_handling process_handling
def process_handling(*args, &block)
# // Method to process handling.
xail_core_winselect_process_handling(*args, &block)
return process_pageright if handle?(:pageright) && Input.trigger?(:RIGHT)
return process_pageleft if handle?(:pageleft) && Input.trigger?(:LEFT)
end
def process_pageright
# // Method to process page right.
Sound.play_cursor
Input.update
deactivate
call_handler(:pageright)
end
def process_pageleft
# // Method to process page left.
Sound.play_cursor
Input.update
deactivate
call_handler(:pageleft)
end
end
#==============================================================================#
# ** Window_Icon
#------------------------------------------------------------------------------
# New Window :: Window_Icon - A window for drawing icon(s).
#==============================================================================#
class Window_Icon < Window_Base
attr_accessor :enabled
attr_accessor :alignment
def initialize(x, y, window_width, hsize)
# // Method to initialize the icon window.
super(0, 0, window_width, window_height(hsize))
@icons = []
@index = 0
@enabled = true
@alignment = 0
refresh
end
def window_height(hsize)
# // Method to return the height.
fitting_height(hsize)
end
def refresh
# // Method to refresh the icon window.
contents.clear
end
def draw_cmd_icons(icons, index)
# // Draw all of the icons.
return if !@enabled
count = 0
for i in icons
align = 0
x = 110
next if i[index].nil?
case @alignment
when 1, 2 ; align = -110
end
draw_icon(i[index], x + align, 24 * count)
count += 1
break if (24 * count > height - 24)
end
end
end
#==============================================================================
# ** Game_Party
#------------------------------------------------------------------------------
# Adding check item method to return a item based on the type.
#==============================================================================
class Game_Party < Game_Unit
def check_item?(item, type)
# // Method to return a item based on the type.
case type
when :items ; $data_items[item]
when :weapons ; $data_weapons[item]
when :armors ; $data_armors[item]
when :gold ; item
when :exp ; item
end
end
end
#==============================================================================
# ** Game_Event
#------------------------------------------------------------------------------
# Adding methods to check for comments on events.
#==============================================================================
class Game_Event < Game_Character
def comment?(comment)
# // Method to check if comment is included in event.
unless empty? or @list.nil?
for evt in @list
if evt.code == 108 or evt.code == 408
if evt.parameters[0].include?(comment)
return true
end
end
end
end
return false
end
def comment_int?(comment)
# // Method to check for a integer in event.
unless empty? or @list.nil?
for evt in @list
if evt.code == 108 or evt.code == 408
if evt.parameters[0] =~ /<#{comment}:[ ]?(\d*)>?/
return ($1.to_i > 0 ? $1.to_i : 0)
end
end
end
end
end
def comment_string?(comment)
# // Method to check for a string in event.
unless empty? or @list.nil?
for evt in @list
if evt.code == 108 or evt.code == 408
if evt.parameters[0] =~ /<#{comment}:[ ]?(\w*)>?/
return $1.to_s
end
end
end
end
end
end # END OF FILE
#=*==========================================================================*=#
# ** END OF FILE
#=*==========================================================================*Grazie in anticipo
-
Salve a tutti,
esiste un modo per rendere questi due script compatibili fra loro? Oppure esistono altri message system compatibili? (Ho già provato con il Lune)(Sistema di scelte)
#------------------------------------------------------------------------------#
# Galv's Visual Novel Choices
#------------------------------------------------------------------------------#
# For: RPGMAKER VX ACE
# Version 1.9
#------------------------------------------------------------------------------#
# 2013-01-16 - Version 1.9 - Added Y offset for choice window
# 2012-11-28 - Version 1.8 - Z level setting added
# 2012-11-28 - Version 1.7 - Added compatability for some cursor scripts
# 2012-11-28 - Version 1.6 - Fixed a bug that could crash the game.
# 2012-11-28 - Version 1.5 - Added offset to change postion of cursor x and y
# 2012-11-28 - Version 1.4 - Fixed z levels and made cursor use an image
# 2012-11-27 - Version 1.3 - Fixed a bug with cancel choice selection
# 2012-11-27 - Version 1.2 - added a switch to disable script effects
# 2012-11-27 - Version 1.1 - added ability to use different image per choice
# - added a couple more options
# 2012-11-27 - Version 1.0 - release
#------------------------------------------------------------------------------#
# This script overwrites the default "Show Choices" list. The choices are
# changed so they display centered on the screen with a graphic behind each
# of them. Made with visual novel choice selection in mind.
#------------------------------------------------------------------------------#
# INSTRUCTIONS:
# Copy the graphic from the demo /Graphics/System into your project.
# Copy the script into your script list, below Materials and above Main
#
# Some setup options below, most only need to be changed if you use your own
# custom choice image.
#------------------------------------------------------------------------------#
# Codes:
#------------------------------------------------------------------------------#
# Most of the usual codes that work in messages should work in choices.
# (eg. \V[x], \N[x], \C[x], etc. Look at message tooltip to know more.)
#
# A new one has been added so you can change the background image for separate
# choice options.
#
# \B[x]
#
# This works by adding the number x (as you put in the code above) to the end
# of the CHOICE IMAGE file name. For example, the default choice image is:
# "Choice.png" located in /Graphics/System/. If you put the code anywhere in
# a choice box: \B[3] it will look for "Choice3.png" image in the same
# location.
#------------------------------------------------------------------------------#
($imported ||= {})["Galvs_Image_Choices"] = true
module Galv_Choice
#------------------------------------------------------------------------------#
# SCRIPT SETUP OPTIONS
#------------------------------------------------------------------------------#
CURSOR_IMAGE = "Cursor" # Images used to determine which option you select
CURSOR_OPACITY = 255 # Opacity of the cursor
CURSOR_Y_OFFSET = 0 # Nudge cursor position vertically
CURSOR_X_OFFSET = 0 # Nudge cursor position horizontally
CHOICE_IMAGE = "Choice" # Image for each choice located in /Graphics/System
IMAGE_Y_OFFSET = 3 # Nudge your choice image vertically if needed
IMAGE_OPACITY = 215 # The opacity of the image
CHOICE_HEIGHT = 45 # How tall each choice.
CHOICE_ITEM_Y = 2 # Offset for choice item text
CENTER_TEXT = true # left aligned if false, centered if true
DISABLE_SWITCH = 1 # Turn this switch ON to disable this script
CHOICES_Y = 0 # Y offset to move choice window up or down.
# useful if you use a script that creates a namebox
CHOICES_Z = 50 # The z value of the choices window. Try changing it
# if pictures or other scripts appear over or under
# the choices window to how you like.
#------------------------------------------------------------------------------#
OTHER_Y_OFFSET = 12 # May fix other cursor scripts positioning
#------------------------------------------------------------------------------#
# SCRIPT SETUP OPTIONS
#------------------------------------------------------------------------------#
end
class Window_ChoiceList < Window_Command
alias galv_choice_initialize initialize
def initialize(message_window)
galv_choice_initialize(message_window)
self.z = Galv_Choice::CHOICES_Z
end
def start
@index = 0
setup_choices
make_cursor
refresh
open
activate
update_placement
update_bgs
refresh
select(0)
end
def make_cursor
return if $game_switches[Galv_Choice::DISABLE_SWITCH]
@cursor_sprite = Sprite.new
@cursor_sprite.bitmap = Cache.system(Galv_Choice::CURSOR_IMAGE)
end
def setup_choices
@choice_sprite = []
if !$game_switches[Galv_Choice::DISABLE_SWITCH]
self.opacity = 0
get_widths
else
self.opacity = 255
end
end
alias galv_choice_update_placement update_placement
def update_placement
if $game_switches[Galv_Choice::DISABLE_SWITCH]
galv_choice_update_placement
else
self.width = [max_choice_width + 12, 96].max + padding * 4
self.width = [width, Graphics.width].min
self.height = contents_height + Galv_Choice::CHOICE_HEIGHT - 10
self.x = (Graphics.width - width) / 2
if @message_window.openness < 100
self.y = Graphics.height - contents_height + item_height / 2
elsif @message_window.y >= Graphics.height / 2
self.y = @message_window.y - contents_height + item_height / 2 - Galv_Choice::CHOICES_Y
else
self.y = @message_window.y + @message_window.height + item_height / 2 + Galv_Choice::CHOICES_Y
end
end
end
alias galv_choice_contents_height contents_height
def contents_height
if $game_switches[Galv_Choice::DISABLE_SWITCH]
galv_choice_contents_height
else
(item_max + 1) * item_height
end
end
def draw_item(index)
rect = item_rect_for_text(index)
draw_text_ex(rect.x, rect.y, command_name(index))
if !$game_switches[Galv_Choice::DISABLE_SWITCH]
draw_bgs(index)
end
end
def item_rect_for_text(index)
rect = item_rect(index)
if $game_switches[Galv_Choice::DISABLE_SWITCH]
rect.x += 4
rect.width -= 8
rect
else
if Galv_Choice::CENTER_TEXT
rect.x = (max_choice_width - @text_sizes.collect {|s| text_size(s).width }[index] + (padding * 3)) / 2
else
rect.x += 4
end
rect.width -= 8
rect.y += Galv_Choice::CHOICE_ITEM_Y
rect
end
end
def get_widths
@text_sizes = []
@choice_background = []
$game_message.choices.each_with_index do |c,i|
@text_sizes = esc_characters(c,i)
end
end
def esc_characters(text,index)
result = text.to_s.clone
result.gsub!(/\\/) { "\e" }
result.gsub!(/\e\e/) { "\\" }
result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
result.gsub!(/\eN\[(\d+)\]/i) { $game_actors[$1.to_i].name}
result.gsub!(/\eP\[(\d+)\]/i) {
if $game_party.members[$1.to_i].nil?
""
else
$game_party.members[$1.to_i].name
end
}
result.gsub!(/\eG/i) { Vocab::currency_unit }
result.gsub!(/\eC\[(\d+)\]/i) { "" }
result.gsub!(/\eI\[(\d+)\]/i) { " " }
result.gsub!(/\eB\[(\d+)\]/i) { @choice_background[index] = $1.to_i }
result.gsub!(/\eB\[(\d+)\]/i) { "" }
result
end
def convert_escape_characters(text)
result = text.to_s.clone
result.gsub!(/\\/) { "\e" }
result.gsub!(/\e\e/) { "\\" }
result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
result.gsub!(/\eN\[(\d+)\]/i) { actor_name($1.to_i) }
result.gsub!(/\eP\[(\d+)\]/i) { party_member_name($1.to_i) }
result.gsub!(/\eG/i) { Vocab::currency_unit }
result.gsub!(/\eB\[(\d+)\]/i) { "" }
result
end
def item_height
return line_height if $game_switches[Galv_Choice::DISABLE_SWITCH]
return Galv_Choice::CHOICE_HEIGHT
end
def item_rect(index)
rect = Rect.new
rect.width = item_width
rect.height = item_height - 15
rect.height += 15 if $game_switches[Galv_Choice::DISABLE_SWITCH]
rect.x = index % col_max * (item_width + spacing)
rect.y = index / col_max * item_height
rect
end
def draw_bgs(index)
return if @choice_sprite[index] != nil
if @choice_background[index].nil?
b = ""
else
b = @choice_background[index]
end
@choice_sprite[index] = Sprite.new
@choice_sprite[index].bitmap = Cache.system(Galv_Choice::CHOICE_IMAGE + b.to_s)
@choice_sprite[index].x = index % col_max * (item_width + spacing)
@choice_sprite[index].y = index / col_max * item_height
@choice_sprite[index].z = self.z - 2
end
def update_bgs
@choice_sprite.each_with_index do |s,i|
s.y = self.y + i * Galv_Choice::CHOICE_HEIGHT + Galv_Choice::IMAGE_Y_OFFSET
s.x = (Graphics.width - s.width) / 2
s.opacity = Galv_Choice::IMAGE_OPACITY
end
end
def dispose_bgs
@choice_sprite.each_with_index do |s,i|
s.dispose
s.bitmap.dispose
end
if !$game_switches[Galv_Choice::DISABLE_SWITCH]
@cursor_sprite.dispose
@cursor_sprite.bitmap.dispose
@choice_sprite = []
end
end
alias galv_choice_call_ok_handler call_ok_handler
def call_ok_handler
galv_choice_call_ok_handler
dispose_bgs
end
alias galv_choice_call_cancel_handler call_cancel_handler
def call_cancel_handler
galv_choice_call_cancel_handler
dispose_bgs
end
def update_cursor
if $game_switches[Galv_Choice::DISABLE_SWITCH]
super
else
cursor_rect.empty
return if @cursor_sprite.nil? || @choice_sprite.nil?
if @index < 0
@cursor_sprite.opacity = 0
else
@cursor_sprite.opacity = Galv_Choice::CURSOR_OPACITY
@cursor_sprite.x = @choice_sprite[@index].x + Galv_Choice::CURSOR_X_OFFSET
@cursor_sprite.y = @choice_sprite[@index].y + Galv_Choice::CURSOR_Y_OFFSET
@cursor_sprite.z = self.z - 1
cursor_rect.y = (item_height * @index) + Galv_Choice::OTHER_Y_OFFSET
end
end
end
end # Window_ChoiceList < Window_Command(XS Message system)
#==============================================================================
# XS - Message
# Author: Nicke
# Created: 08/11/2012
# Edited: 19/11/2012
# Version: 1.0b
#==============================================================================
# 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.
#==============================================================================
# Requires: XS - Core Script.
#==============================================================================
# A message system based on using variables ingame.
# If the variable has the value 0 the default value will take place.
# To setup a simple message dialog do as you would normally do when adding
# text in events but before it set the variables you want to change.
#
# When changing width and height you should know that height is visible
# line numbers which means the numbers 1 to 4 is prefered to use.
#
# Example:
# You could set the width to 544 and height to 4 which is pretty much how
# the default message window looks like.
#
# This script also support sound effect to be played each time a character is
# processed. Can be tweaked in the settings.
#
# When setting variables for bold, shadow, namebox and skin etc. Remember to use
# the script area in the variable.
#
# If I wanted to enable bold and setting a custom skin I would do this:
# Set the value "true" in the script section for variable 41.
# Set the value "Window" in the script section for variable 44.
#
# Note: When changing the message window skin you must use this method after
# setting the variable in order to properly update to the new skin:
# SceneManager.scene.set_message_skin
#
# Example:
# So after setting variable 44 (default one) to "Window3" call that method.
#
# *** Only for RPG Maker VX Ace. ***
#==============================================================================
($imported ||= {})["XAIL-MESSAGE-SYSTEM"] = true
module XAIL
module MSG
#--------------------------------------------------------------------------#
# * Settings
#--------------------------------------------------------------------------#
# Set the window variables.
# WINDOW_VAR = [width, height, padding, x, y, delay,
# font_name, font_size, font_color, outline, bold, shadow, namebox, skin]
WINDOW_VAR = [31,32,33,34,35,36,37,38,39,40,41,42,43,44]
# Set the window open/close animation in frames.
# WINDOW_ANIMATE = [openness, closeness]
WINDOW_ANIMATE = [15, 15]
# Name box options.
# NAME = [font, size, color, bold, shadow]
NAME = [["Verdana", "Anklada™"], 14, Color.new(255,225,235,225), true, true]
# Set the sound for when the characters are processing.
# The sound effect will be played each time the occurence is met.
# From the default it will happen every odd processed character.
# Can be set to nil to disable.
# SE = [occurence, name, vol, pitch]
SE = [2, "Decision1", 60, 150]
# Set the animation options for face window.
# For type only :fade exists at the moment.
# ANIM_FACE = [enabled, type, animation_speed_in, animation_speed_out]
ANIM_FACE = [true, :fade, 12, 8]
# Set the animation options for name window.
# For type only :fade exists at the moment.
# ANIM_NAME = [animation_speed_in, animation_speed_out]
ANIM_NAME = [true, :fade, 12, 8]
end
end
# *** Don't edit below unless you know what you are doing. ***
#==============================================================================#
# ** Error Handler
#==============================================================================#
unless $imported["XAIL-XS-CORE"]
# // Error handler when XS - Core is not installed.
msg = "The script %s requires the latest version of XS - Core in order to function properly."
name = "XS - Message"
msgbox(sprintf(msg, name))
exit
end
#==============================================================================#
# ** Window_Base
#==============================================================================#
class Window_Base < Window
alias xail_msg_winbase_upd_open update_open
def update_open(*args, &block)
# // Method to update openness
# This should only occur when $game_message is visible.
if $game_message.visible
self.openness += XAIL::MSG::WINDOW_ANIMATE[0]
self.opacity = self.openness unless self.opacity == 0
self.back_opacity = self.openness unless self.opacity == 0
@opening = false if open?
else
xail_msg_winbase_upd_open(*args, &block)
end
end
alias xail_msg_winbase_upd_close update_close
def update_close(*args, &block)
# // Method override to update closeness.
# This should only occur when $game_message is visible.
if $game_message.visible
self.openness -= XAIL::MSG::WINDOW_ANIMATE[1]
self.opacity = self.openness unless self.opacity == 0
self.back_opacity = self.openness unless self.opacity == 0
@closing = false if close?
else
xail_msg_winbase_upd_close(*args, &block)
end
end
end
#==============================================================================#
# ** Window_Message_Face
#==============================================================================#
class Window_Message_Face < Window_Base
def initialize(x, y, width, height)
# // Method to initialize.
super(x, y, width, height)
skin = $game_variables[XAIL::MSG::WINDOW_VAR[13]] == 0 ? "Window" : $game_variables[XAIL::MSG::WINDOW_VAR[13]]
self.windowskin = Cache.system(skin)
refresh
end
def refresh
# // Method to refresh.
contents.clear
r = Rect.new(0, 0, width, height)
r2 = Rect.new(2, 2, width-28, height-28)
contents.fill_rect(r, Color.new(75,125,135,245))
contents.gradient_fill_rect(r2, Color.new(125,125,125,255), Color.new(0,0,0,255), false)
draw_face($game_message.face_name, $game_message.face_index, 4, 4)
end
end
#==============================================================================#
# ** Window_Message_Name
#==============================================================================#
class Window_Message_Name < Window_Base
def initialize(name, x, y, width, height)
# // Method to initialize.
super(x, y, width, height)
skin = $game_variables[XAIL::MSG::WINDOW_VAR[13]] == 0 ? "Window" : $game_variables[XAIL::MSG::WINDOW_VAR[13]]
self.windowskin = Cache.system(skin)
@name = name
refresh
end
def standard_padding
# // Method to set standard padding
return 4
end
def name=(name)
# // Method to refresh and set name.
return if @name == name
@name = name
refresh
end
def refresh
# // Method to refresh.
contents.clear
draw_font_text(@name, 0, 0, contents_width, 1, XAIL::MSG::NAME[0], XAIL::MSG::NAME[1], XAIL::MSG::NAME[2])
end
end
#==============================================================================#
# ** Window_Message
#==============================================================================#
class Window_Message < Window_Base
def initialize
# // Method override initialize for window message.
super(0, 0, window_width, window_height)
self.z = 200
self.openness = 0
create_all_windows
create_back_bitmap
create_back_sprite
clear_instance_variables
set_window_skins
end
def set_window_skins
# // Method to set window skins.
@gold_window.windowskin = Cache.system(get_var(XAIL::MSG::WINDOW_VAR[13], :skin))
@choice_window.windowskin = Cache.system(get_var(XAIL::MSG::WINDOW_VAR[13], :skin))
@number_window.windowskin = Cache.system(get_var(XAIL::MSG::WINDOW_VAR[13], :skin))
@item_window.windowskin = Cache.system(get_var(XAIL::MSG::WINDOW_VAR[13], :skin))
end
#~ alias xail_msg_winmsg_create_all_windows create_all_windows
#~ def create_all_windows(*args, &block)
#~ # // Method to create all windows.
#~ xail_msg_winmsg_create_all_windows(*args, &block)
#~ @choice_window = Window_ChoiceList.new(self)
#~ @number_window = Window_NumberInput.new(self)
#~ @item_window = Window_KeyItem.new(self)
#~ @choice_window.windowskin
#~ end
def window_width
# // Method override to return width.
get_var(XAIL::MSG::WINDOW_VAR[0], :width)
end
def window_height
# // Method override to return height.
fitting_height(get_var(XAIL::MSG::WINDOW_VAR[1], :height))
end
def standard_padding
# // Method to return the padding.
get_var(XAIL::MSG::WINDOW_VAR[2], :padding)
end
def window_x
# // Method to return x value of window.
get_var(XAIL::MSG::WINDOW_VAR[3], :win_x)
end
def window_y
# // Method to return y value of window.
get_var(XAIL::MSG::WINDOW_VAR[4], :win_y)
end
def get_var(var, type)
# // Method to return variable value if conditions met.
unless var.nil? or $game_variables[var] == 0
return $game_variables[var]
else
case type
when :width ; return Graphics.width
when :height ; return visible_line_number
when :padding ; return 12
when :win_x ; return 0
when :win_y ; return 0
when :wait ; return 0
when :font_name ; return Font.default_name
when :font_size ; return Font.default_size
when :font_color ; return Font.default_color
when :font_out_color ; return Font.default_out_color
when :font_bold ; return Font.default_bold
when :font_shadow ; return Font.default_shadow
when :name ; return ""
when :skin ; return "Window"
end
end
end
alias xail_msg_winmsg_upd_placement update_placement
def update_placement(*args, &block)
# // Method to update placement.
xail_msg_winmsg_upd_placement(*args, &block)
self.width = window_width
self.height = window_height
self.x = window_x
self.y = window_y
create_contents
end
def fiber_main
# // Method override for fiber main.
$game_message.visible = true
update_background
update_placement
loop do
process_all_text if $game_message.has_text?
process_input
$game_message.clear
@gold_window.close
dispose_face
dispose_name
Fiber.yield
break unless text_continue?
end
close_and_wait
$game_message.visible = false
@fiber = nil
end
def draw_message_face
# // Method to draw face window.
unless $game_message.face_name.empty?
x = window_x - 44
@face_window = Window_Message_Face.new(x, window_y, 128, 128)
@face_window.z = 201
@face_window.opacity = 0
if XAIL::MSG::ANIM_FACE[0]
case XAIL::MSG::ANIM_FACE[1]
when :fade
@face_window.contents_opacity = 0
fade(XAIL::MSG::ANIM_FACE[2], @face_window, :in)
end
end
end
end
def draw_message_name
# // Method to draw name window.
name = get_var(XAIL::MSG::WINDOW_VAR[12], :name)
unless name == ""
w = text_size(name).width + 24
x = window_x + 16
@name_window = Window_Message_Name.new(name, x, window_y - 31, w, 34)
@name_window.z = 199
if XAIL::MSG::ANIM_NAME[0]
case XAIL::MSG::ANIM_NAME[1]
when :fade
@name_window.opacity = @name_window.contents_opacity = 0
fade(XAIL::MSG::ANIM_NAME[2], @name_window, :in, true, true)
end
end
end
end
alias xail_msg_winmsg_process_normal_character process_normal_character
def process_normal_character(c, pos)
# // Method to set a wait time for each processed character.
# This will also play a SE based on if the pos is a odd number.
xail_msg_winmsg_process_normal_character(c, pos)
wait(get_var(XAIL::MSG::WINDOW_VAR[5], :wait))
if (pos[:x] % XAIL::MSG::SE[0] > 0)
Sound.play(XAIL::MSG::SE[1], XAIL::MSG::SE[2], XAIL::MSG::SE[3]) unless XAIL::MSG::SE.nil?
end
end
alias xail_msg_winmsg_open_and_wait open_and_wait
def open_and_wait(*args, &block)
# // Method for open and wait.
xail_msg_winmsg_open_and_wait(*args, &block)
draw_message_face ; draw_message_name
end
def new_page(text, pos)
# // Method override for new page.
contents.clear
contents.font.name = get_var(XAIL::MSG::WINDOW_VAR[6], :font_name)
contents.font.size = get_var(XAIL::MSG::WINDOW_VAR[7], :font_size)
contents.font.color = get_var(XAIL::MSG::WINDOW_VAR[8], :font_color)
contents.font.out_color = get_var(XAIL::MSG::WINDOW_VAR[9], :font_out_color)
contents.font.bold = eval(get_var(XAIL::MSG::WINDOW_VAR[10], :font_bold)) unless $game_variables[XAIL::MSG::WINDOW_VAR[10]] == 0
contents.font.shadow = eval(get_var(XAIL::MSG::WINDOW_VAR[11], :font_shadow)) unless $game_variables[XAIL::MSG::WINDOW_VAR[11]] == 0
pos[:x] = new_line_x
pos[:y] = 0
pos[:new_x] = new_line_x
pos[:height] = calc_line_height(text)
clear_flags
end
def new_line_x
# // Method for new line x pos.
$game_message.face_name.empty? ? 0 : @face_window.width / 2 + 4
end
def input_choice
# // Method to start the input choice.
@choice_window.start
skin = $game_variables[XAIL::MSG::WINDOW_VAR[13]] == 0 ? "Window" : $game_variables[XAIL::MSG::WINDOW_VAR[13]]
@choice_window.windowskin = Cache.system(skin)
@choice_window.opacity = 255
Fiber.yield while @choice_window.active
end
def input_number
# // Method to start the input number.
@number_window.start
skin = $game_variables[XAIL::MSG::WINDOW_VAR[13]] == 0 ? "Window" : $game_variables[XAIL::MSG::WINDOW_VAR[13]]
@number_window.windowskin = Cache.system(skin)
@number_window.opacity = 255
Fiber.yield while @number_window.active
end
def fade(max, window, type, con_op = true, op = false)
# // Method to fade in/out the windows opacity and/or contents_opacity.
return if window.is_a?(Array)
case type
when :in
for i in 1..max
Graphics.update
window.contents_opacity = i * (255 / max) if con_op
window.opacity = i * (255 / max) if op
end
when :out
for i in 1..max
Graphics.update
window.contents_opacity = 255 - i * (255 / max) if con_op
window.opacity = 255 - i * (255 / max) if op
end
end
end
def dispose_face
# // Method to dispose face window.
unless @face_window.nil? or @face_window.is_a?(Array)
if XAIL::MSG::ANIM_FACE[0]
case XAIL::MSG::ANIM_FACE[1]
when :fade
fade(XAIL::MSG::ANIM_FACE[3], @face_window, :out)
end
end
@face_window = nil, @face_window.dispose
end
end
def dispose_name
# // Method to dispose name window.
unless @name_window.nil? or @name_window.is_a?(Array)
if XAIL::MSG::ANIM_NAME[0]
case XAIL::MSG::ANIM_NAME[1]
when :fade
fade(XAIL::MSG::ANIM_NAME[3], @name_window, :out)
end
end
@name_window = nil, @name_window.dispose
end
end
end
#==============================================================================#
# ** Scene_Map
#==============================================================================#
class Scene_Map < Scene_Base
def set_message_skin
# // Method to set message window skin.
skin = $game_variables[XAIL::MSG::WINDOW_VAR[13]] == 0 ? "Window" : $game_variables[XAIL::MSG::WINDOW_VAR[13]]
@message_window.windowskin = Cache.system(skin)
end
end # END OF FILE
#=*==========================================================================*=#
# ** END OF FILE
#=*==========================================================================*=#(Seconda parte del message system)
#==============================================================================
# XaiL System - Core
# Author: Nicke
# Created: 07/01/2012
# Edited: 08/10/2013
# Version: 2.1f
#==============================================================================
# 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.
#
# Core script for XaiL System.
# Caution! This needs to be located before any other XS scripts.
#
# *** Only for RPG Maker VX Ace. ***
#==============================================================================
($imported ||= {})["XAIL-XS-CORE"] = true
module Colors
#--------------------------------------------------------------------------#
# * Colors
#--------------------------------------------------------------------------#
White = Color.new(255,255,255)
LightRed = Color.new(255,150,150)
LightGreen = Color.new(150,255,150)
LightBlue = Color.new(150,150,255)
DarkYellow = Color.new(225,225,20)
Alpha = Color.new(0,0,0,128)
AlphaMenu = 100
end
module XAIL
module CORE
#--------------------------------------------------------------------------#
# * Settings
#--------------------------------------------------------------------------#
# Graphics.resize_screen(width, height )
Graphics.resize_screen(544,416)
# FONT DEFAULTS:
Font.default_name = ["VL Gothic"]
Font.default_size = 20
Font.default_bold = false
Font.default_italic = false
Font.default_shadow = true
Font.default_outline = true
Font.default_color = Colors::White
Font.default_out_color = Colors::Alpha
# USE_TONE = true/false:
# Window tone for all windows ingame. Default: true.
USE_TONE = false
# SAVE
SAVE_MAX = 20 # Default 16.
SAVE_FILE_VIS = 4 # Default 4.
# JAPANESE = true/false
JAPANESE = false
end
end
# *** Don't edit below unless you know what you are doing. ***
#==============================================================================#
# ** Game_System
#==============================================================================#
class Game_System
# // Method to determine japanese game.
def japanese? ; return XAIL::CORE::JAPANESE ; end
end
#==============================================================================#
# ** String
#==============================================================================#
class String
def to_class(parent = Kernel)
# // Method to convert string to class.
chain = self.split "::"
klass = parent.const_get chain.shift
return chain.size < 1 ? (klass.is_a?(Class) ? klass : nil) : chain.join("::").to_class(klass)
rescue
nil
end
def cap_words
# // Method to capitalize every word.
self.split(' ').map {|w| w.capitalize }.join(' ')
end
def slice_char(char)
# // Method to slice char.
self.split(char).map {|w| w.sub(char, " ") }.join(" ")
end
end
#==============================================================================#
# ** Vocab
#==============================================================================#
class << Vocab
def xparam(id)
# // Method to return xparam name.
case id
when 0 ; "Hit Chance"
when 1 ; "Evasion"
when 2 ; "Critical Chance"
when 3 ; "Critical Evasion"
when 4 ; "Magic Evasion"
when 5 ; "Magic Reflection"
when 6 ; "Counter Attack"
when 7 ; "HP Regeneration"
when 8 ; "MP Regeneration"
when 9 ; "TP Regeneration"
end
end
end
#==============================================================================
# ** Sound
#==============================================================================
class << Sound
def play(name, volume, pitch, type = :se)
# // Method to play a sound. If specified name isn't valid throw an error.
case type
when :se ; RPG::SE.new(name, volume, pitch).play rescue valid?(name)
when :me ; RPG::ME.new(name, volume, pitch).play rescue valid?(name)
when :bgm ; RPG::BGM.new(name, volume, pitch).play rescue valid?(name)
when :bgs ; RPG::BGS.new(name, volume, pitch).play rescue valid?(name)
end
end
def valid?(name)
# // Method to raise error if specified sound name is invalid.
msgbox("Error. Unable to find sound file: " + name)
exit
end
end
#==============================================================================
# ** DataManager
#==============================================================================
class << DataManager
def savefile_max
# // Method override, save file max.
return XAIL::CORE::SAVE_MAX
end
end
#==============================================================================
# ** SceneManager
#==============================================================================
class << SceneManager
def call_ext(scene_class, args = nil)
# // Method to call a scene with arguments.
@stack.push(@scene)
@scene = scene_class.new(args)
end
end
#==============================================================================
# ** Scene_File
#==============================================================================
class Scene_File < Scene_MenuBase
def visible_max
# // Method override, visible_max for save files.
return XAIL::CORE::SAVE_FILE_VIS
end
end
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# Importing font fix that will remove weird characters.
# Adding new methods such as new gauge, actor param, font text, icon drawing,
# big icon drawing and a line with a shadow.
#==============================================================================
class Window_Base < Window
# // Importing Custom font fix. (Credit Lone Wolf).
alias :process_normal_character_vxa :process_normal_character
def process_normal_character(c, pos)
return unless c >= ' '
process_normal_character_vxa(c, pos)
end unless method_defined? :process_normal_character
def draw_text_ex_no_reset(x, y, text)
# // Method to draw ex text without resetting the font.
text = convert_escape_characters(text)
pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
process_character(text.slice!(0, 1), text, pos) until text.empty?
end
alias xail_core_winbase_upt_tone update_tone
def update_tone(*args, &block)
# // Method to change tone of the window.
return unless XAIL::CORE::USE_TONE
xail_core_winbase_upt_tone(*args, &block)
end
def draw_gauge_ex(x, y, width, height, rate, color1, color2)
# // Method to draw a gauge.
fill_w = (width * rate).to_i
gauge_y = y + line_height - 8
contents.fill_rect(x, gauge_y, width + 1, height + 1, Color.new(255,255,255,64))
contents.fill_rect(x, gauge_y, width, height, Color.new(0,0,0,100))
contents.gradient_fill_rect(x, gauge_y, fill_w, height, color1, color2)
end
def draw_actor_param_gauge(actor, x, y, width, param_id, font, size, bar_color1, bar_color2, txt_color1, txt_color2)
# // Method to draw actor parameters with a gauge.
case param_id
when 2 ; param_rate = actor.param(2) / actor.param_max(2).to_f
when 3 ; param_rate = actor.param(3) / actor.param_max(3).to_f
when 4 ; param_rate = actor.param(4) / actor.param_max(4).to_f
when 5 ; param_rate = actor.param(5) / actor.param_max(5).to_f
when 6 ; param_rate = actor.param(6) / actor.param_max(6).to_f
when 7 ; param_rate = actor.param(7) / actor.param_max(7).to_f
end
contents.font.name = font
contents.font.size = size
contents.font.bold = true
contents.font.shadow = false
draw_gauge_ex(x, y - 14, width, 20, param_rate, bar_color1, bar_color2)
contents.font.color = txt_color1
draw_text(x + 10, y, 120, line_height, Vocab::param(param_id))
contents.font.color = txt_color2
draw_text(x + width - 38, y, 36, line_height, actor.param(param_id), 2)
reset_font_settings
end
def draw_actor_xparam_gauge(actor, x, y, width, xparam_id, font, size, bar_color1, bar_color2, txt_color1, txt_color2)
# // Method to draw actor xparameters with a gauge.
case xparam_id
when 0
xparam_rate = actor.xparam(0) / 100.to_f
xparam_name = Vocab.xparam(0)
when 1
xparam_rate = actor.xparam(1) / 100.to_f
xparam_name = Vocab.xparam(1)
when 2
xparam_rate = actor.xparam(2) / 100.to_f
xparam_name = Vocab.xparam(2)
when 3
xparam_rate = actor.xparam(3) / 100.to_f
xparam_name = Vocab.xparam(3)
when 4
xparam_rate = actor.xparam(4) / 100.to_f
xparam_name = Vocab.xparam(4)
when 5
xparam_rate = actor.xparam(5) / 100.to_f
xparam_name = Vocab.xparam(5)
when 6
xparam_rate = actor.xparam(6) / 100.to_f
xparam_name = Vocab.xparam(6)
when 7
xparam_rate = actor.xparam(7) / 100.to_f
xparam_name = Vocab.xparam(7)
when 8
xparam_rate = actor.xparam(8) / 100.to_f
xparam_name = Vocab.xparam(8)
when 9
xparam_rate = actor.xparam(9) / 100.to_f
xparam_name = Vocab.xparam(9)
end
contents.font.name = font
contents.font.size = size
contents.font.bold = true
contents.font.shadow = false
draw_gauge_ex(x, y - 14, width, 20, xparam_rate, bar_color1, bar_color2)
contents.font.color = txt_color1
draw_text(x + 10, y, 120, line_height, xparam_name)
contents.font.color = txt_color2
draw_text(x + width - 38, y, 36, line_height, "#{actor.xparam(xparam_id)}%", 2)
reset_font_settings
end
def draw_line_ex(x, y, color, shadow)
# // Method to draw a horizontal line with a shadow.
line_y = y + line_height / 2 - 1
contents.fill_rect(x, line_y, contents_width, 2, color)
line_y += 1
contents.fill_rect(x, line_y, contents_width, 2, shadow)
end
def draw_box(x, y, width, height, color, shadow)
# // Method to draw a box with shadow.
contents.fill_rect(x, y, width, height, color)
x += 1
y += 1
contents.fill_rect(x, y, width, height, shadow)
end
def draw_vertical_line_ex(x, y, color, shadow)
# // Method to draw a vertical line with a shadow.
line_x = x + line_height / 2 - 1
contents.fill_rect(line_x, y, 2, contents_height, color)
line_x += 1
contents.fill_rect(line_x, y, 2, contents_height, shadow)
end
def draw_icons(icons, alignment, x = 0, y = 0, offset_icon = [])
# // Method to draw icons in a horizonal or vertical alignment.
icons.each {|icon|
next if icon.nil?
# // If included in offset do extra spacing.
offset_icon.each {|offset|
if icon == offset
y += line_height * 1 if alignment == :vertical
x += line_height * 1 if alignment == :horizontal
end
}
draw_icon(icon.nil? ? nil : icon, x.nil? ? 0 : x, y.nil? ? 0 : y) rescue nil
y += line_height if alignment == :vertical
x += line_height if alignment == :horizontal
}
end
def draw_big_icon(icon, x, y, width, height, opacity = 255)
# // Method to draw a big icon.
bitmap = Cache.system("Iconset")
rect = Rect.new(icon % 16 * 24, icon / 16 * 24, 24, 24)
rect2 = Rect.new(x, y, width, height)
contents.stretch_blt(rect2, bitmap, rect, opacity)
end
def draw_font_text(text, x, y, width, alignment, font, size, color, bold = true, shadow = true)
# // Method to draw font text.
contents.font.name = font
contents.font.size = size
contents.font.color = color
contents.font.bold = bold
contents.font.shadow = shadow
contents.font.out_color = Color.new(0,0,0,255)
draw_text(x, y, width, calc_line_height(text), text, alignment)
reset_font_settings
end
def draw_font_text_ex(text, x, y, font, size, color, bold = true, shadow = true)
# // Method to draw font text ex.
contents.font.name = font
contents.font.size = size
contents.font.color = color
contents.font.bold = bold
contents.font.shadow = shadow
contents.font.out_color = Color.new(0,0,0,255)
text = convert_escape_characters(text)
pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
process_character(text.slice!(0, 1), text, pos) until text.empty?
reset_font_settings
end
end
#==============================================================================#
# ** Window_Selectable
#------------------------------------------------------------------------------
# Adding support for pageleft and pageright for window selectable.
#==============================================================================#
class Window_Selectable < Window_Base
def cursor_pageright ; end
def cursor_pageleft ; end
alias xail_core_winselect_process_cursor_move process_cursor_move
def process_cursor_move(*args, &block)
# // Method to process cursor movement.
xail_core_winselect_process_cursor_move(*args, &block)
cursor_pageright if !handle?(:pageright) && Input.trigger?(:RIGHT)
cursor_pageright if !handle?(:pageleft) && Input.trigger?(:LEFT)
end
alias xail_core_winselect_process_handling process_handling
def process_handling(*args, &block)
# // Method to process handling.
xail_core_winselect_process_handling(*args, &block)
return process_pageright if handle?(:pageright) && Input.trigger?(:RIGHT)
return process_pageleft if handle?(:pageleft) && Input.trigger?(:LEFT)
end
def process_pageright
# // Method to process page right.
Sound.play_cursor
Input.update
deactivate
call_handler(:pageright)
end
def process_pageleft
# // Method to process page left.
Sound.play_cursor
Input.update
deactivate
call_handler(:pageleft)
end
end
#==============================================================================#
# ** Window_Icon
#------------------------------------------------------------------------------
# New Window :: Window_Icon - A window for drawing icon(s).
#==============================================================================#
class Window_Icon < Window_Base
attr_accessor :enabled
attr_accessor :alignment
def initialize(x, y, window_width, hsize)
# // Method to initialize the icon window.
super(0, 0, window_width, window_height(hsize))
@icons = []
@index = 0
@enabled = true
@alignment = 0
refresh
end
def window_height(hsize)
# // Method to return the height.
fitting_height(hsize)
end
def refresh
# // Method to refresh the icon window.
contents.clear
end
def draw_cmd_icons(icons, index)
# // Draw all of the icons.
return if !@enabled
count = 0
for i in icons
align = 0
x = 110
next if i[index].nil?
case @alignment
when 1, 2 ; align = -110
end
draw_icon(i[index], x + align, 24 * count)
count += 1
break if (24 * count > height - 24)
end
end
end
#==============================================================================
# ** Game_Party
#------------------------------------------------------------------------------
# Adding check item method to return a item based on the type.
#==============================================================================
class Game_Party < Game_Unit
def check_item?(item, type)
# // Method to return a item based on the type.
case type
when :items ; $data_items[item]
when :weapons ; $data_weapons[item]
when :armors ; $data_armors[item]
when :gold ; item
when :exp ; item
end
end
end
#==============================================================================
# ** Game_Event
#------------------------------------------------------------------------------
# Adding methods to check for comments on events.
#==============================================================================
class Game_Event < Game_Character
def comment?(comment)
# // Method to check if comment is included in event.
unless empty? or @list.nil?
for evt in @list
if evt.code == 108 or evt.code == 408
if evt.parameters[0].include?(comment)
return true
end
end
end
end
return false
end
def comment_int?(comment)
# // Method to check for a integer in event.
unless empty? or @list.nil?
for evt in @list
if evt.code == 108 or evt.code == 408
if evt.parameters[0] =~ /<#{comment}:[ ]?(\d*)>?/
return ($1.to_i > 0 ? $1.to_i : 0)
end
end
end
end
end
def comment_string?(comment)
# // Method to check for a string in event.
unless empty? or @list.nil?
for evt in @list
if evt.code == 108 or evt.code == 408
if evt.parameters[0] =~ /<#{comment}:[ ]?(\w*)>?/
return $1.to_s
end
end
end
end
end
end # END OF FILE
#=*==========================================================================*=#
# ** END OF FILE
#=*==========================================================================*Grazie in anticipo
-
Credo che me lo farò bastare... Grazie mille :smile:
http://levelsave.com/wp-content/uploads/2012/04/The-walking-dead-choices.jpg (TELLTALE)
-
Nel gioco dovrebbero esserci un' infinità di scelte quindi sarebbe molto più semplice con uno script che cambi solo il lato grafico del sistema di scelte base, da richiamare (come i vari message system) ogni volta che devo inserire scelte
-
Intendi inserendo un immagine ecc?
-
(Sono abbastanza nuovo sul forum e nel mondo di RPG Maker quindi non ho idea se uno script del genere esista)
Mi serve uno script che vada a modificare il sistema di scelte di base con qualcosa più gradevole all'occhio (magari in stile Telltale) da utilizzare in un progetto con trama dinamica.
Ho già controllato nel forum e non dovrebbe esserci niente di simile,chiedo venia se questo è un re-post
Grazie in anticipo e non esitate a chiedere se qualcosa non è chiaro :smile:
PROGETTO A FINI COMMERCIALI
-
Cambiare la finestra in modo che sembri un commento sotto un video Youtube (Nome del personaggio come se fosse un nickname,immagine del personaggio come se fosse un immagine del profilo ecc)
Non so se è chiaro
-
Ciao a tutti,
sono nuovo sul forum e non ho idea se questo sia un re-post (ho fatto un veloce scroll e non ho notato nulla di simile)
Mi servirebbe uno script per cambiare la finestra di dialogo ,o , in caso non sia necessario uno script, un mini-tutorial che mi spieghi come fare.
Non so se sono stato abbastanza chiaro,non esitate a chiedere spiegazioni
Grazie in anticipo :smile:
(Progetto a fini commerciali)
Questa finestra per intenderci
http://www.ludomedia.it/upload/screens/pc/39203/Ao-Oni-0.png
-
Salve a tutti sono nuovo sul forum (e non so se questo sia un re-post)
Vorrei sapere se i tiles per le mappe in parallasse di Celianna sono utilizzabili per scopi commerciali o se è possibile acquistarne la licenza
Esistono,anche ,altri tiles (sempre per mappe parallax) free con commercial usage?
Grazie in anticipo :smile:
-
Premetto che sono nuovo sul forum e,in generale, anche al mondo di Rpg Maker
Salve a tutti,
vorrei sapere se,tramite script,si potesse ottenere un sistema di parametri modificabili dal giocatore in base ai quali si ottiene un determinato risultato (negativo o positivo).
Per intenderci qualcosa di simile a "Game Dev Tycoon" (quello nell'immagine) nel quale modificando gli indicatori del gameplay,della trama e della grafica si poteva ottenere un buon gioco o meno.
Attualmente non sono interessato allo Script in se,voglio solo sapere se qualcosa del genere è fattibile... magari più in là cercherò qualcuno in grado di farlo.
Grazie in anticipo :smile:
Se non sono stato chiaro riquardo qualcosa non esitate a chiedere spiegazioni
http://static.delmondo.info/wp-content/uploads/2013/05/game-dev-tycoon.png
-
Ciao,
vorrei sapere se c'è qualcuno sul forum che abbia già pubblicato giochi su Steam (passando da Greenlight)
(Sono nuovo)

Script pulsanti
in Richieste scripts RGSS3 (VX-Ace)
Posted
Mh, ci proverò, grazie per l'aiuto ;)
In ogni caso, non ci sono script specifici per quello che chiedo?