-
Posts
322 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Posts posted by Glesion
-
-
Benvenuta ^^
-
Confermo, ora funziona correttamente!
Grazie per il rapidissimo fix ^^
-
Ciao! Stavo provando lo script, e ho notato che se in un evento c'è la condizione "se il tasto ... è premuto", considera solo l'input dalla tastiera e non quello dal joypad: supponiamo per esempio che deve succedere qualcosa quando premo il tasto "giù", se provo a premere la freccia direzionale dalla tastiera funziona correttamente, se premo il tasto giù del joypad l'evento non funziona.
C'è un qualche modo per far funzionare l'evento anche quando si usa il joypad?
Se serve saperlo, le prove le ho fatte su un progetto nuovo, e ho semplicemente messo in un processo parallelo "se C (ovvero il tasto A del joypad, o Invio della tastiera) è premuto, muovi l'evento 0001 (evento vuoto, solo con la grafica) in giù", nient'altro e, come dicevo prima, funziona solo con l'input da tastiera. Non ho minimamente modificato lo script!
-
A me non convince quella luce incredibile in alto a sinistra, sembra che sia stato messo lì un riflettore o mi sta sfuggendo qualcosa? Soprattutto perché poi dalle finestre sembra entrare la stessa luce.
E anche i fiori in basso a sinistra non mi piacciono troppo messi tutti così di fila per l'intera lunghezza di quel tratto di erba, magari verrebbe meglio togliendone un po' a destra o a sinistra, o dividendo direttamente in 2 quella parte (tipo come è divisa in basso a destra).
-
Salve, aggiornamento sull'andamento del progetto!
Il progresso principale riguarda trama e lore, che ora sono pressoché complete: la trama in particolare è già tutta scritta, dall'intro al finale, incluse tutte le città, i principali punti di interesse ed i personaggi secondari più importanti, di cui ovviamente non parlerò qui, almeno per ora.
Sarà suddivisa in 4 capitoli e non in 3+1 come pensavo inizialmente, e questo per via di una piccola" chicca" del gioco, che richiede i 4 capitoli.
La lore è stata suddivisa in lore principale e lore secondaria; la lore principale è quella necessaria per comprendere al meglio la trama (che a dire il vero è più complicata di quanto mi aspettassi all'inizio), e include, oltre ai background dei personaggi, anche i principali concetti del gioco in sé, come le essenze, spezzoni di storia e altro ancora.
La lore secondaria include tutta la restante storia, la religione, le leggende e molto altro.
Dopodiché, per quanto riguarda il gameplay in generale, ho implementato un blando sistema giorno/notte che progredisce con l'avanzamento del gioco e non in maniera regolare. Non è tanto, ma è meglio di niente.
Ho anche fatto una cosa che avevo sempre rimandato, ovvero decidere i nomi di città ed npc: ne trovate alcuni nel post principale, insieme ad un paio di mappe e ad alcune modifiche alle storie dei personaggi.
E l'alfa? I motivi per cui non è ancora disponibile sono 2: il primo sta nella mia indecisione, dato che premia volevo farla arrivare solo fino al primo" dungeon", poi molto più avanti, fino alla seconda città (quella principale), e infine ho deciso di farla finire prima di andare nella Città Centrale.
Il secondo motivo, nonché il più impegnativo è che, sia per i cambiamenti che ho apportato alla lore mentore la scrivevo, sia per un mio miglioramento nel mapping, ho deciso di rifare praticamente da zero tutte le mappe fatte finora, ma credo ne valga la pena.
Prevedo di finire il re-mapping a breve, ho aspettato di essere a bnon punto per aggiornare.
Se avete domande, come sempre, fatele, se avete critiche per le mappe o altro, meglio ancora.
Ora sono anche dal cellulare, magari vi aggiorno meglio nel post dell'alfa, più avanti.
Per il momento, stay tuned!
-
-
Mi posteresti o linkeresti anche il XAIL-XS-CORE? Non riesco a trovarlo col forum ufficiale off! > <
Aggiornato sopra ^^
-
Salve, sto utilizzando questo script per il menù di gioco --> http://www.rpgmakercentral.com/topic/8529-xs-menu-delux/
Nella schermata principale del menù ci sono le facce dei pg con 3 barre, pv, pm e pt. È possibile in qualche modo rimuovere la terza barra (quella dei pt) visto che, nel gioco in cui sto utilizzando lo script, è sempre vuota e diventa abbastanza fastidiosa da vedere?
Il link che porta allo script non sembra funzionare, quindi lo copio-incollo qui sotto ^^
#==============================================================================
# XaiL System - Menu Delux
# Author: Nicke
# Created: 20/11/2012
# Edited: 08/02/2013
# Version: 1.1b
#==============================================================================
# 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.
#==============================================================================
#
# This script changes the way the menu scene works. Not compatible with
# XS - Menu or XS - Icon Menu.
#
# Instructions are in the settings module below. Make sure you read through
# everything so you understand each section.
#
# *** Only for RPG Maker VX Ace. ***
#==============================================================================
($imported ||= {})["XAIL-XS-MENU_DELUX"] = true
module XAIL
module MENU_DELUX
#--------------------------------------------------------------------------#
# * Settings
#--------------------------------------------------------------------------#
# FONT:
# FONT = [name, size, color, bold, shadow]
FONT = [["freeserif", "freeserif"], 20, Color.new(255,255,255), false, true]
# PLAYTIME_ICON:
# Set playtime window icon.
# PLAYTIME_ICON = icon_id
PLAYTIME_ICON = 0
# MENU_ALIGNMENT:
# MENU_ALIGNMENT = 0 (left), 1 (center), 2 (right)
MENU_ALIGNMENT = 0 # Default: 2.
# MENU_SKIN:
# The windowskin to use for the windows.
# Set to nil to disable.
# MENU_SKIN = string
MENU_SKIN = nil
# MENU_LIST:
# name, icon_index and custom are optional.
# If name is empty it will use the corresponding symbol as name instead.
# To make a command a common event you need to set custom to the common event
# id you want to run as seen below.
# symbol => [name, description, icon_index, enabled, personal, custom]
MENU_LIST = {
:item => ["Oggetti", "Visualizza gli oggetti posseduti.", 201, true, false],
:equip => ["Equip", "Cambia l'equipaggiamento.", 201, true, true],
:skill => ["Abilità", "Controlla le abilità disponibili.", 201, true, true],
:status => ["Status", "Controlla lo status dei personaggi.", 201, true, true],
:formation => ["Formazione", "Chambia la formazione del gruppo.", 201, true, false],
:save => ["Quest", "Visualizza le quest.", 201, true, false, Scene_Quest],
:load => ["Carica", "Carica i progressi di gioco.", 201, true, false, Scene_Load],
:game_end => ["Esci", "Esci dal gioco.", 201, true, false],
:title => ["Titolo", "Torna alla schermata del titolo.", 201, true, false, Scene_Title],
#:com_event => ["Camping", "Run common event camping.", 728, true, false, 1]
} # Don't remove this line!
# MENU_SAVE = true/false
# Override enabled option for save (so you can change it ingame).
MENU_SAVE = false
# If MENU_CUSTOM is true you will have to add the commands yourself
# ingame, which can be useful for certain quest related stuff or if you
# want to enable/disable menu commands.
# To add/remove a command ingame follow these instructions:
#
# In a script call do like this:
# menu_scene(key, type)
# menu_scene(:item,:add) # To add item to menu list.
# menu_scene(:item,:del) # To remove item from menu list.
#
# In a conditional branch you can check if a menu command is
# enabled/disabled:
# menu_active?(key)
# menu_active?(:item) # Check if item is enabled.
# !menu_active?(:item) # Check if item is disabled.
#
# To set a id to be enabled do like this:
# menu_active(:skill, true) # Set menu skill to be enabled.
#
# To add/remove all available menu commands use one of the
# following methods in a script call:
# menu_add_all
# menu_del_all
#
# MENU_CUSTOM = true/false
MENU_CUSTOM = false
# The text to be displayed if no menu items is available.
# Only used if MENU_CUSTOM is true.
# MENU_EMPTY = string
EMPTY = "Il menu non è disponibile."
# MENU_MUSIC:
# Set the music to be played at the menu scene.
# This is optional.
# MUSIC = true/false
MUSIC = false
# MUSIC_BGM = [name, volume, pitch]
MUSIC_BGM = ["Theme4", 70, 100]
# MUSIC_BGS = [name, volume, pitch]
MUSIC_BGS = ["Darkness", 50, 100]
# ANIM_LIST:
# A list of animation images.
# name => [z, zoom_x, zoom_y, blend_type, opacity]
ANIM_LIST = {
#"Menu1" => [1, 1, 1, 1, 125],
#"Menu1" => [1, 1.8, 1.8, 1, 155]
} # Don't remove this line!
# BACKGROUND:
# name => [x, y, z, opacity]
BACKGROUND = {
#"Menu_Back" => [0, 0, 255, 255]
} # Don't remove this line!
# Show vocab for HP, MP and TP.
# BAR_VOCAB = true/false
BAR_VOCAB = true
# BAR_COLOR = rgba(255,255,255,255)
# Set the color of the gauges.
BAR_HP = [Color.new(255,25,25,32), Color.new(255,150,150)]
BAR_MP = [Color.new(25,25,255,32), Color.new(150,150,255)]
BAR_TP = [Color.new(0,0,0,0), Color.new(0,0,0,0)]
# DETAILS:
# Setup details here. (Recommended to use the default ones since you will
# need a bit RGSS knowledge to add more.)
def self.details
["#{Vocab::currency_unit}: #{$game_party.gold}",
#"Steps: #{$game_party.steps}",
#"Oggetti Ottenuti: #{$game_party.all_items.size}",
#"Zona: #{$data_mapinfos[$game_map.map_id].name}",
#"Leader: #{$game_party.leader.name}",
#"Battaglie: #{$game_system.battle_count}",
#"Save Count: #{$game_system.save_count}",
#"Party Members: #{$game_party.all_members.size}",
#"Highest Level: #{$game_party.highest_level}",
#"Variable I: #{$game_variables[1]}",
#"Variable II: #{$game_variables[2]}"],
] end
# DETAILS_ICONS:
# DETAILS_ICONS[id] = icon_id
# Set the details icon_id. (optional)
# Should be in the same order as details.
# Use nil to disable a icon.
DETAILS_ICONS = []
DETAILS_ICONS[0] = 1490 # GOLD
#DETAILS_ICONS[1] = 172 # STEPS
#DETAILS_ICONS[2] = 328 # ITEMS
#DETAILS_ICONS[3] = 3785 # MAP
#DETAILS_ICONS[4] = 4425 # LEADER
#DETAILS_ICONS[5] = 3731 # BATTLE COUNT
#DETAILS_ICONS[6] = 224 # SAVE COUNT
#DETAILS_ICONS[7] = 121 # PARTY MEMBERS
#DETAILS_ICONS[8] = 14 # HIGHEST LEVEL
#DETAILS_ICONS[9] = nil # VARIABLE 1
#DETAILS_ICONS[10] = nil # VARIABLE 2
# Transition, nil to use default.
# TRANSITION [speed, transition, opacity]
TRANSITION = nil
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 - Menu Delux"
msgbox(sprintf(msg, name))
exit
end
#==============================================================================#
# ** Game_System
#==============================================================================#
class Game_System
attr_accessor :menu_list
alias xail_menu_delux_gm_sys_initialize initialize
def initialize(*args, &block)
# // Method to initialize game system.
xail_menu_delux_gm_sys_initialize(*args, &block)
@menu_list = {}
end
def get_menu
# // Method to get the menu list.
XAIL::MENU_DELUX::MENU_CUSTOM ? @menu_list : XAIL::MENU_DELUX::MENU_LIST
end
end
#==============================================================================#
# ** Game_Interpreter
#==============================================================================#
class Game_Interpreter
def menu_scene(key, type = :add)
# // Method to add/remove a menu item to the list.
case type
when :add # // Add menu id.
unless $game_system.menu_list.include?(XAIL::MENU_DELUX::MENU_LIST[key])
$game_system.menu_list[key] = XAIL::MENU_DELUX::MENU_LIST[key]
end unless XAIL::MENU_DELUX::MENU_LIST[key].nil?
when :del # // Remove menu id.
unless XAIL::MENU_DELUX::MENU_LIST[key].nil?
$game_system.menu_list.delete(key)
end
end
end
def menu_active?(key)
# // Method to check if menu key is enabled.
# This will return nil if menu item not added in the list.
return $game_system.menu_list[key][3] rescue nil
end
def menu_active(key, enabled)
# // Method to enable id.
$game_system.menu_list[key][3] = enabled
end
def menu_add_all
# // Method to add all available menu items.
XAIL::MENU_DELUX::MENU_LIST.each_key {|key| menu_scene(key) }
end
def menu_del_all
# // Method to remove all available menu items.
XAIL::MENU_DELUX::MENU_LIST.each_key {|key| menu_scene(key, :del) }
end
end
#==============================================================================
# ** Window_MenuCommand
#==============================================================================
class Window_MenuCommand < Window_Command
def window_width
# // Method to return the width of the window.
return Graphics.width / 4
end
def window_height
# // Method to return the height of the window.
return Graphics.height
end
def alignment
# // Method to return the alignment.
return XAIL::MENU_DELUX::MENU_ALIGNMENT
end
def menu_color(color, enabled = true)
# // Method to set the color and alpha if not enabled.
contents.font.color.set(color)
contents.font.color.alpha = Colors::AlphaMenu unless enabled
end
def item_rect_for_text(index)
# // Method to draw item rect for text.
rect = item_rect(index)
rect.x += 25
draw_line_ex(rect.x - 4, rect.y + 9, Color.new(255,255,255), Color.new(0,0,0,128))
draw_icon(XAIL::MENU_DELUX::MENU_LIST.values[index][2], -2, rect.y) unless XAIL::MENU_DELUX::MENU_LIST.values[index][2].nil?
rect
end
def draw_item(index)
# // Method to draw the command item.
contents.font.name = XAIL::MENU_DELUX::FONT[0]
contents.font.size = XAIL::MENU_DELUX::FONT[1]
# // Save enable option.
XAIL::MENU_DELUX::MENU_LIST[:save][3] = save_enabled if XAIL::MENU_DELUX::MENU_SAVE
# // Default enable option.
menu_color(XAIL::MENU_DELUX::FONT[2], menu_enabled?(index))
# // Font settings
contents.font.bold = XAIL::MENU_DELUX::FONT[3]
contents.font.shadow = XAIL::MENU_DELUX::FONT[4]
draw_text(item_rect_for_text(index), command_name(index), alignment)
reset_font_settings
end
def menu_enabled?(index)
# // Method to check if menu item is enabled.
return $game_system.get_menu.values[index][3]
end
def make_command_list
# // Method to add the commands.
$game_system.get_menu.each {|key, value|
name = value[0] == "" ? key.id2name.capitalize : value[0]
XAIL::MENU_DELUX::MENU_LIST[:save][3] = save_enabled if XAIL::MENU_DELUX::MENU_SAVE
add_command(name, key, value[3], value[5].nil? ? nil : value[5])
}
end
end
#==============================================================================
# ** Window_MenuStatus
#==============================================================================
class Window_MenuStatus < Window_Selectable
def initialize(x, y)
# // Method to initialize the window.
super(x, y, window_width, window_height)
self.arrows_visible = false
@pending_index = -1
refresh
end
def window_width
# // Method to determine window width.
return Graphics.width / 2.4
end
def col_max
# // Method to determine col max.
return 2
end
def spacing
# // Method to determine spacing.
return 6 if Graphics.width == 544 # For standard resolution.
return 44 # For high resolution.
end
def item_width
# // Method to determine item width.
return 98
end
def item_height
# // Method to determine item height.
return 128
end
def refresh
# // Method to refresh the window.
super
# // Only display cursor arrow if more or equal to 5 party members.
if $game_party.all_members.size >= 5
self.arrows_visible = true
end
end
def draw_item(index)
# // Method to draw item.
actor = $game_party.members[index]
rect = item_rect(index)
# // Face
draw_actor_face(actor, rect.x + 1, rect.y + 1, true)
# // Name
draw_font_text(actor.name, rect.x + 4, rect.y, rect.width, 0, XAIL::MENU_DELUX::FONT[0], 20, XAIL::MENU_DELUX::FONT[2])
# // Level
lvl = "#{Vocab::level_a}: #{actor.level}"
draw_font_text(lvl, rect.x + 4, rect.y + 64, rect.width, 0, XAIL::MENU_DELUX::FONT[0], 18, XAIL::MENU_DELUX::FONT[2])
# // Class
# // Check if Yanfly Class System is installed.
if $imported["YEA-ClassSystem"]
actor_class = actor.subclass.nil? ? actor.class.name : "#{actor.class.name} [#{actor.subclass.name}]"
else
actor_class = actor.class.name
end
draw_font_text(actor_class, rect.x - 4, rect.y + 76, rect.width, 2, XAIL::MENU_DELUX::FONT[0], 16, XAIL::MENU_DELUX::FONT[2])
# // Stats
draw_menu_stats(actor, :hp, rect.x, rect.y + 90, XAIL::MENU_DELUX::BAR_HP[0], XAIL::MENU_DELUX::BAR_HP[1], rect.width - 2)
draw_menu_stats(actor, :mp, rect.x, rect.y + 100, XAIL::MENU_DELUX::BAR_MP[0], XAIL::MENU_DELUX::BAR_MP[1], rect.width - 2)
draw_menu_stats(actor, :tp, rect.x, rect.y + 110, XAIL::MENU_DELUX::BAR_TP[0], XAIL::MENU_DELUX::BAR_TP[1], rect.width - 2)
end
def draw_menu_stats(actor, stat, x, y, color1, color2, width)
# // Method to draw actor hp & mp.
case stat
when :hp
rate = actor.hp_rate ; vocab = Vocab::hp_a ; values = [actor.hp, actor.mhp]
when :mp
rate = actor.mp_rate ; vocab = Vocab::mp_a ; values = [actor.mp, actor.mmp]
when :tp
rate = actor.tp_rate ; vocab = Vocab::tp_a ; values = [actor.tp, actor.max_tp]
end
contents.font.name = XAIL::MENU_DELUX::FONT[0]
contents.font.size = 14 # // Override font size.
contents.font.color = XAIL::MENU_DELUX::FONT[2]
contents.font.bold = XAIL::MENU_DELUX::FONT[3]
contents.font.shadow = XAIL::MENU_DELUX::FONT[4]
# // Draw guage.
draw_gauge_ex(x, y - 8, width, 8, rate, color1, color2)
# // Draw stats.
draw_text(x + 2, y, width, line_height, values[0], 0)
draw_text(x + 1, y, width, line_height, values[1], 2)
# // Draw vocab.
draw_text(x, y, width, line_height, vocab, 1) if XAIL::MENU_DELUX::BAR_VOCAB
reset_font_settings
end
end
#==============================================================================
# ** Window_Menu_Details
#==============================================================================
class Window_Menu_Details < Window_Base
def initialize(x, y)
# // Method to initialize.
super(x, y, window_width, window_height)
@leader = $game_party.leader
refresh
end
def window_width
# // Method to determine window width.
return Graphics.width / 3
end
def window_height
# // Method to determine window height.
return Graphics.height
end
def refresh
# // Method to refresh the window.
contents.clear
# // Draw details.
y = -10
XAIL::MENU_DELUX.details.each_index {|i|
draw_line_ex(0, y += 24, Color.new(255,255,255,32), Color.new(0,0,0,64))
draw_font_text(XAIL::MENU_DELUX.details[i], -4, line_height * i + 4, contents_width, 2, XAIL::MENU_DELUX::FONT[0], 16, XAIL::MENU_DELUX::FONT[2])
}
# // Draw icons.
draw_icons(XAIL::MENU_DELUX::DETAILS_ICONS, :vertical, 2, line_height * 0 + 2)
end
def update
# // Method to update details window.
super
if @leader != $game_party.leader
@leader = $game_party.leader
refresh
end
end
end
#==============================================================================
# ** Window_Menu_Playtime
#==============================================================================
class Window_Menu_Playtime < Window_Base
def initialize(x, y)
# // Method to initialize.
super(x, y, 120, fitting_height(1))
@playtime = $game_system.playtime_s
refresh
end
def refresh
# // Method to refresh the window.
contents.clear
# // Draw icon.
draw_icon(XAIL::MENU_DELUX::PLAYTIME_ICON, 4, 0)
# // Draw playtime.
draw_font_text(@playtime, 0, 6, contents_width, 2, XAIL::MENU_DELUX::FONT[0], 22, XAIL::MENU_DELUX::FONT[2])
end
def update
# // Method to update the window.
super
@playtime = $game_system.playtime_s
refresh
end
end
#==============================================================================#
# ** Window_Menu_Help
#==============================================================================#
class Window_Menu_Help < Window_Help
attr_accessor :index
alias xail_icon_menu_winhelp_init initialize
def initialize(*args, &block)
# // Method to initialize help window.
xail_icon_menu_winhelp_init(*args, &block)
@index = 0
end
def set_text(text, enabled)
# // Method to set a new help text.
if text != @text
menu_color(XAIL::MENU_DELUX::FONT[2], enabled)
@text = text
refresh
end
end
def refresh
# // Refresh help contents.
contents.clear
draw_help_text
end
def draw_help_text
# // Method to draw the help text.
contents.font.name = XAIL::MENU_DELUX::FONT[0]
contents.font.size = XAIL::MENU_DELUX::FONT[1]
menu_color(XAIL::MENU_DELUX::FONT[2], menu_enabled?(@index))
contents.font.bold = XAIL::MENU_DELUX::FONT[3]
contents.font.shadow = XAIL::MENU_DELUX::FONT[4]
# // Draw title and description for the menu.
draw_line_ex(0, 14, Color.new(255,255,255), Color.new(0,0,0,128))
draw_text_ex_no_reset(0, 0, @text)
reset_font_settings
end
def menu_enabled?(index)
# // Method to check if menu item is enabled.
return $game_system.get_menu.values[index][3]
end
def menu_color(color, enabled = true)
# // Method to set the color and alpha if not enabled.
contents.font.color.set(color)
contents.font.color.alpha = 150 unless enabled
end
end
#==============================================================================#
# ** Scene_MenuBase
#==============================================================================#
class Scene_MenuBase < Scene_Base
def start
# // Method to start the scene.
super
@actor = $game_party.menu_actor
if SceneManager.scene_is?(Scene_Menu)
@backgrounds = []
@animations = []
create_menu_backgrounds
create_menu_animations
end
end
def create_menu_backgrounds
# // Method to create custom background(s).
XAIL::MENU_DELUX::BACKGROUND.each {|key, value| @backgrounds << [sprite.new, key] }
@backgrounds.each {|i|
i[0].bitmap = Cache.system(i[1])
i[0].x = XAIL::MENU_DELUX::BACKGROUND[i[1]][0]
i[0].y = XAIL::MENU_DELUX::BACKGROUND[i[1]][1]
i[0].z = XAIL::MENU_DELUX::BACKGROUND[i[1]][2]
i[0].opacity = XAIL::MENU_DELUX::BACKGROUND[i[1]][3]
}
end
def create_menu_animations
# // Method to create custom animation(s).
# name => [z, zoom_x, zoom_y, blend_type, opacity]
XAIL::MENU_DELUX::ANIM_LIST.each {|key, value| @animations.push << [Plane.new, key] }
@animations.each {|i|
i[0].bitmap = Cache.system(i[1])
i[0].z = XAIL::MENU_DELUX::ANIM_LIST[i[1]][0]
i[0].zoom_x = XAIL::MENU_DELUX::ANIM_LIST[i[1]][1]
i[0].zoom_y = XAIL::MENU_DELUX::ANIM_LIST[i[1]][2]
i[0].blend_type = XAIL::MENU_DELUX::ANIM_LIST[i[1]][3]
i[0].opacity = XAIL::MENU_DELUX::ANIM_LIST[i[1]][4]
}
end
alias xail_upd_menubase_delux_upd update
def update(*args, &block)
# // Method for updating the scene.
xail_upd_menubase_delux_upd(*args, &block)
if SceneManager.scene_is?(Scene_Menu)
for i in 0...@animations.size
@animations[i][0].ox += 1.2 - i
@animations[i][0].oy -= 0.6 + i
end unless scene_changing?
delay?(1)
end
end
def delay?(amount)
# // Method to delay.
amount.times do
update_basic
end
end
alias xail_menubase_delux_transition perform_transition
def perform_transition(*args, &block)
# // Method to create the transition.
return if $game_system.get_menu.empty?
if XAIL::MENU_DELUX::TRANSITION.nil?
xail_menubase_delux_transition(*args, &block)
else
Graphics.transition(XAIL::MENU_DELUX::TRANSITION[0],XAIL::MENU_DELUX::TRANSITION[1],XAIL::MENU_DELUX::TRANSITION[2])
end
end
def dispose_sprites
# // Method to dispose sprites.
@backgrounds.each {|i| i[0].dispose unless i[0].nil? ; i[0] = nil } rescue nil
@animations.each {|i| i[0].dispose unless i[0].nil? ; i[0] = nil } rescue nil
end
def terminate
# // Method to terminate.
super
dispose_sprites unless SceneManager.scene_is?(Scene_Menu)
end
end
#==============================================================================#
# ** Scene_Menu
#==============================================================================#
class Scene_Menu < Scene_MenuBase
def start
super
# // Method to start the scene.
# // Return if menu empty.
return command_map if $game_system.get_menu.empty?
# // Create windows.
create_menu_command_window
create_menu_status_window
create_menu_details_window
create_menu_playtime_window
create_menu_help_window
# // Set help text to first menu command.
help_update(@command_window.index)
# // Play music if enabled.
play_menu_music if XAIL::MENU_DELUX::MUSIC
end
def create_menu_command_window
# // Method to create the command window.
@command_window = Window_MenuCommand.new
@command_window.windowskin = Cache.system(XAIL::MENU_DELUX::MENU_SKIN) unless XAIL::MENU_DELUX::MENU_SKIN.nil?
@command_window.back_opacity = 96
$game_system.get_menu.each {|key, value|
unless value[5].nil?
@command_window.set_handler(key, method(:command_custom))
else
if value[4]
@command_window.set_handler(key, method(:command_personal))
else
@command_window.set_handler(key, method("command_#{key}".to_sym))
end
end
}
@command_window.set_handler(:cancel, method(:return_scene))
end
def create_menu_status_window
# // Method to create the status window.
@status_window = Window_MenuStatus.new(0, 0)
@status_window.height = Graphics.height - 72
@status_window.x = @command_window.width
@status_window.back_opacity = 96
end
def create_menu_details_window
# // Method to create the details window.
@details_window = Window_Menu_Details.new(0, 0)
@details_window.x = Graphics.width - @details_window.width
@details_window.back_opacity = 96
end
def create_menu_playtime_window
# // Method to create the playtime window.
@playtime_window = Window_Menu_Playtime.new(0, 0)
@playtime_window.x = Graphics.width - @playtime_window.width
@playtime_window.y = Graphics.height - @playtime_window.height - 26
@playtime_window.opacity = 0
@playtime_window.z = 201
end
def create_menu_help_window
# // Method to create the help window.
@help_window = Window_Menu_Help.new(2)
@help_window.viewport = @viewport
@help_window.windowskin = Cache.system(XAIL::MENU_DELUX::MENU_SKIN) unless XAIL::MENU_DELUX::MENU_SKIN.nil?
@help_window.index = @command_window.index
@help_window.y = Graphics.height - @help_window.height
@help_window.back_opacity = 255
@help_window.z = 200
end
def play_menu_music
# // Method to play menu music.
@last_bgm = RPG::BGM.last
@last_bgs = RPG::BGS.last
bgm = XAIL::MENU_DELUX::MUSIC_BGM
bgs = XAIL::MENU_DELUX::MUSIC_BGS
Sound.play(bgm[0], bgm[1], bgm[2], :bgm)
Sound.play(bgs[0], bgs[1], bgs[2], :bgs)
end
alias xail_upd_menu_delux_upd update
def update(*args, &block)
# // Method for updating the scene.
xail_upd_menu_delux_upd(*args, &block)
old_index = @help_window.index
help_update(@command_window.index) if old_index != @command_window.index
end
def help_update(index)
# // If index changes update help window text.
list = XAIL::MENU_DELUX::MENU_LIST
icon = list.values[index][2].nil? ? "" : list.values[index][2]
name = list.values[index][0] == "" ? list.keys[index].id2name.capitalize : list.values[index][0]
if icon == "" ; title = name ; else ; title = '\i[' + icon.to_s + ']' + name ; end
desc = '\c[0]' + list.values[index][1]
text = "#{title}\n#{desc}"
enabled = list.values[index][3]
@help_window.index = index
@help_window.set_text(text, enabled)
end
def on_personal_ok
# // Method override on personal ok.
scene = "Scene_#{@command_window.current_symbol.to_s.capitalize}".to_class
SceneManager.call(scene)
end
def command_custom
# // Method to call a custom command. (Don't remove)
if @command_window.current_ext.is_a?(Integer)
$game_temp.reserve_common_event(@command_window.current_ext)
return command_map
end
SceneManager.call(@command_window.current_ext)
end
def command_map
# // command_map (Don't remove)
if $game_system.get_menu.empty?
Sound.play_buzzer
$game_message.texts << XAIL::MENU_DELUX::EMPTY
end
SceneManager.call(Scene_Map)
end
def pre_terminate
# // Method to pre terminate scene menu.
# // Play last bgm and bgs if menu music is enabled.
if XAIL::MENU_DELUX::MUSIC
@last_bgm.replay rescue nil
@last_bgs.replay rescue nil
end
end
end # END OF FILE
#=*==========================================================================*=#
# ** END OF FILE
#=*==========================================================================*=#Core:
#==============================================================================
# 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 = ["freeserif"]
Font.default_size = 22
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 = true
# 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
#=*==========================================================================*=# -
Se ti interessa avere "qualche" icona in più, puoi usare questa immagine --> https://vxresource.files.wordpress.com/2010/07/bigset.png
Come ha detto Guardian, basta salvarla in graphics/system nella cartella del progetto e rinominarla "iconset".
Ce ne sono anche altre, basta cercare un attimo su google, questa però mi sembra essere la più completa.
-
Vabbè quanta roba, sono a posto per tutto il gioco XD
Grazie milla :D
-
Salve, come da titolo sto cercando quanti più charaset di animali/mostri possibli; ho cercato su google e anche qui nel forum, ma c'è veramente poco.
Se avete siti linkate pure quelli che li spulcio io :D
Non serve siano in coppia col battler, grazie in anticipo ^^
-
E che ne so io che è pochino XD
Grazie cmq!
-
È senza eventi particolari o processi paralleli, ci sono solo i nemici. Tipo 50x20 è troppo? Meglio dividerla?
-
C'è per caso un "limite" per la grandezza di una mappa? Non intendo la grandezza massima supportata da rpg maker, ma un limite che di solito si tende a non superare per evitare lag o altro.
-
Per non aver spoiler ci fidiamo! XD
A parte scherzi capita la storia della raccolta oggetti, alla fine se è quello lo stile della trama non ci sono problemi nel raccogliere prima il pugnale di fuoco che lo spadino del vento.
^ ^
La trama della prima parte, ce ne sono altre 2 in seguito ;D
Ho tante cosine in mente, vedremo piano piano come viene fuori!
-
Come ho detto, sebbene io non abbia lavorato troppo, ho pensato molto.
La trama si suddivide principalmente in 3 grandi parti: la seconda e la terza sono rigorosamente segrete, la prima, invece, è quella di cui vi ho parlato.
La questline che ho nominato è più che altro un espediente per varie cose: molto molto blandamente si tratta di incontrare un npc (di cui non spoilero nulla), che avrà bisogno di alcuni oggetti (o simili) per far procedere il gioco alla seconda parte, i quali si trovano in zone diverse della mappa, e questo porta chiaramente all'esplorazione della mappa nella sua interezza, allo sbloccare tutti i pg e al procedere appunto con la trama.
È una cosa complicatina da spiegare senza spoiler vari, però di base il gioco ti spinge molto a reperire questi oggetti (o simili) con un percorso preciso (seguendo appunto la questline di quell'npc), ma la mappa di gioco NON è bloccata e il giocatore può andare dove vuole e sbloccare quegli oggetti (o simili) nell'ordine che preferisce (certo, se al livello 5 provi andare in una zona pensata per il livello 30 potresti avere delle difficoltà, ma puoi farlo XD).
Questo è un esempio un po' estremo ovviamente... però spero di aver fatto capire in che modo puoi seguire l'ordine che vuoi per la questline principale (della prima parte), e anche che il poter affrontare delle aree avanzate, che secondo la quesline dovrebbero essere le ultime, tra le prime è un mini-reward per chi completa anche le cose secondarie e ottiene livelli ed equipaggiamenti più forti.
Diciamo che ovviamente il cambio di percorso influirà obbligatoriamente sul gioco, in che modo? Sul gameplay in modo nullo, sulla trama anche (principalmente perché il gioco è basato sul protagonista, e se c'è lui va comunque bene, e anche perché la prima parte, di trama sviluppa si e no il 20%), sulla lore, invece, chi segue il percorso standard sarò avvantaggiato, per il semplice fatto che ogni zona avrà delle cutscene o comunque degli eventi particolari contando sul fatto che tu abbia sbloccato i/il personaggi/o dell'area precedente, e alcuni di questi (eventi) potrebbero essere irrecuperabili.
-
Beh dai, 2 mesi e 10 giorni di riposo sono abbastanza, no? XD
E infatti sono tornato a lavorare al progetto; in realtà è già passato qualche giorno da quando ho ripreso a makerare, ma non volevo riaprire il topic senza qualcosa in mano.
Anzitutto vi premetto che, come avrete intuito, nonostante io abbia pensato molto a trama/lore/gameplay, non ho fatto più di tanto quest'estate per portare avanti il progetto, quindi siamo più o meno allo stesso punto di prima, se non per il fatto che la demo (che da ora chiamerò nel modo più corretto, ovvero alfa) è quasi pronta e la maggior parte dei bug sono stati risolti.
Ma prima di arrivare a quel qualcosa che ho da mostrarvi, vi spiego (più o meno in dettaglio) con quale meccanica ho deciso si procederà nel gameplay.
Avevo detto che sarebbe stato un open world, ed infatti, passato il tutorial, sarà un open world. Tuttavia sarà necessario seguire un percorso ben specifico per proseguire con la trama vera e propria, ma attenzione, questo non implica l'obbligo di seguire quell'esatto percorso. Mi spiego meglio: ci sarà una questline principale, che porterà in varie zone della mappa al fine di completare gli obiettivi utili per finire la quest.
Il gioco darà un forte input su come proseguire nel percorso standard, supponiamo a, b, c, d, ma il giocatore sarà libero di seguire qualunque percorso, come ad esempio b,c,d,a.
Un discorso complesso per spiegare una meccanica che in realtà è molto semplice.
È ovvio che i mostri e le bossfight che si incontreranno saranno più difficili in base alle zone del percorso standard, quindi nella zona d ci saranno mostri più difficili rispetto alla zona b, ma il completamento delle quest secondarie, l'esplorazione e il farming permetteranno di affrontare più o meno tutte le zone nell'ordine che si preferisce.
Questo riguarda l'avanzamento con la trama che si dovrebbe creare, notificherò eventuali cambiamenti.
Altra aggiunta interessante è quella del drop su mappa: ci sono dei piccoli bug che non compromettono in alcun modo il gameplay, ma potrebbero risultare fastidiosi, come ad esempio quello in cui se si killano 2 nemici di fila senza raccogliere il drop, il primo di questi non comparirà nel punto in cui il nemico è morto, ma nel punto in cui il nemico spawna.
Ho inoltre espanso già dalla prima alfa la lore: ogni oggetto ha una propria descrizione (alla Dark Souls) e ogni elemento presente sulle mappe di gioco è posto in modo logico e nella maggior parte dei casi sarà anche spiegato perché si trova lì (principalmente parlando di statue, o comunque oggetti artificiali).
Ho risolto, tra l'altro, un bug che faceva crashare il gioco dopo pochi passi se si aveva un set di armature equipaggiato.
Per quanto riguarda il bs, ho voluto spendere del tempo per modificare gli eventi dei personaggi, cosa che al giocatore non cambia nulla, ma a me renderà le cose più semplici.
Altre 2 modifiche importanti sono la fuga, che necessita ancora di alcune modifiche, ma almeno ora non è più sicura ed ha il 25% di possiblità di fallire, e che in seguito ad una fuga riuscita il nemico non sparisce più, ma rimane stordito sul posto per qualche secondo, permettendo di fuggire anche sulla mappa di gioco (questo è molto efficente per quanto riguarda i nemici aggressivi, che senza lo stordimento farebbero ripartire la battaglia subito dopo la fuga).
Un'ultima modifica che non sarà presente nella alfa sarà il danno su mappa (adesso viene solamente scritto in un messaggio).
Dovrebbe essere tutto; arriviamo dunque al momento che avevo annunciato all'inizio.
Premetto che non avevo alcuna esperienza o competenza, e che ho intenzione di migliorare mano a mano che procedo con il gioco... ebbene si, il fantomatico video che mi avete richiesto è arrivato.
NON è granché, ma almeno mostra abbastanza accuratamente il bs (che è comunque in costante evoluzione) e vi offre un interessante inizio di trama e di lore di cui, se vorrete, potrete cercare di azzeccare la corretta interpretazione!
Siete liberissimi ovviamente di criticarlo, ma terrò conto di tutto ciò che direte per migliorare nel video che farò per una versiona alfa successiva e non per modificare questo primo video.
Enjoy!
La demo uscirà tra poco, non voglio darvi una data precisa, ma sicuramente prima di settembre (se non saltano fuori problemi aggiuntivi mentre ricontrollo, anche prima).
E quindi, stay tuned!
-
Si ma è solo una demo XD
E poi magari hypo tantissimo e il gioco fa schifo, come faccio a saperlo?
Secondo me il video va fatto quando il gioco è quasi completato, o comunque si ha la quasi certezza che sia godibile!
-
Allora... sto provando a fare un video. Non avrete il vostro video.
Non dispongo né di strumenti né di conoscenze per fare un video. Non saprei come farlo, come strutturarlo, cosa metterci.
Inoltre continuo a non capirne il senso.
Detto questo, ehi!
La demo è quasi completata!
Stay tuned!
-
Non c'entra con la richiesta, ma c'entra con lo script, qualcuno sa se funge solo sul bs standard?
-
La demo è quasi completata, nei prossimi giorni vi farò avere un video come mi avete chiesto, dopodiché, dopo le ultime revisioni, vi lascerò anche questa piccola demo, e poi con la fine della scuola inizierò a lavorare su tutto il resto del gioco, ho già un sacco di idee!
E vi informo della presenza di una piccola zona molto molto segreta all'interno della demo (che probabilmente toglierò nella versione completa), voglio vedere chi la trova :P
Stay tuned!
-
La parte del database con battler e gruppi di nemici è completamente vuota nel mio database visto che non mi serviva.
Ho provato a mettere lo status tramite un evento esterno allo script e non dà l'errore, quindi presumo dipenda dallo script!
-
Ciao holy, sto utilizzando questo script nel mio progetto, e in pratica una volta attivato lo status per i lset di armature, dopo qualche passo mi dà questo errore http://s33.postimg.org/t0gt7cnhr/error.png
Sai cosa ptorebbe causarlo?
-
Nono il progetto è sempre quello... non credo siano incompatibilità, non uso script legati alle battaglie, provo a chiedere sul topic dello script.
Pensavo che magari non fosse per via dello script dato che si riferisce a quello dei battler, ma un problema di database o altro.

Sportello aiuti veloci VX-Ace
in Supporto VX e VX-Ace
Posted
Salve, mi sono imbattuto in un singolare problema con gli eventi di vx-ace, non so se è un problema già noto o meno, ma al momento mi risulta essere un ostacolo molto fastidioso.
Semplicemente quando imposto in un evento "Elimina immagine x", il gioco crasha se l'immagine in questione ha l'origine impsotata al centro .-.
Ho provato anche a creare un nuovo progetto solo per testare questa cosa, ed effettivamente nel momento stesso in cui l'evento arriva al punto di dover eliminare l'immagine, semplicemente crasha. Questo succede SOLO quando l'immagine ha l'origine al centro, se è settato su "in alto a sinistra" non dà alcun problema.
Questo qui è l'errore:
Ho provato a guardare quel punto dello script che difatti si trova nella sezione "Update Origin", però non ci capisco molto di script quindi non saprei cosa toccare >.<
Qualcuno sa come risolvere?