| 赞 | 2 |
| VIP | |
| 好人卡 | |
| 积分 | 20 |
| 经验 | |
| 最后登录 | 2025-2-12 |
| 在线时间 | 940 小时 |
- 梦石
- 0
- 星屑
- 2019
- 在线时间
- 940 小时
- 注册时间
- 2015-10-26
- 回帖
- 293

|
楼主 |
发表于 2015-11-16 20:56:51
|
显示全部楼层
对了
@喵呜喵5
这个脚本和存档强化继承脚本有冲突- -,看不出是哪里额

脚本如下
[pre lang="ruby"]#==============================================================================
#
# ?\ Yanfly Engine Ace - Ace Save Engine v1.03
# -- Last Updated: 2012.07.22
# -- Level: Normal
# -- Requires: n/a
#
#==============================================================================
$imported = {} if $imported.nil?
$imported["YEA-SaveEngine"] = true
#==============================================================================
# ?\ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2012.07.22 - Fixed: Location Drawing.
# 2012.01.23 - Anti-crash method added for removed maps.
# 2011.12.26 - Compatibility Update: New Game+
# 2011.12.26 - Started Script and Finished.
#
#==============================================================================
# ?\ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script provides a new save interface for the player. Along with a new
# interface, the player can also load and delete saves straight from the menu
# itself. This will in turn make the save command from the Main Menu always
# available, but the save option within the new save menu will be enabled
# depending on whether or not it is allowed or disallowed. From the interface,
# the player is given more information regarding the save file including the
# the location the player saved at, the amount of gold available, and any
# variables that you want to show the player as well.
#
#==============================================================================
# ?\ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ?\ Materials/ef?T but above ?\ Main. Remember to save.
#
# For first time installers, be warned that loading this script the first time
# may not display all information in the status window for save files made
# before the installation of this script. To remedy this, just load up the save
# and save the file again.
#
#==============================================================================
# ?\ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
#
#==============================================================================
module YEA
module SAVE
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Slot Window Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# This section adjusts how the slot window appears on the left side of the
# screen. This also adjusts the maximum number of saves a player can make,
# the way the slot names appear, and the icons used.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
MAX_FILES = 24 # Maximum saves a player can make. Default: 16
SLOT_NAME = "存档 %s" # How the file slots will be named.
# These are the icons
SAVE_ICON = 368 # Icon used to indicate a save is present.
EMPTY_ICON = 375 # Icon used to indicate an empty file.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Action Window Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# This section adjusts how the action window appears, the sound effect
# played when deleting files, and what appears in the help window above.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
ACTION_LOAD = "读档" # Text used for loading games.
ACTION_SAVE = "存档" # Text used for saving games.
ACTION_DELETE = "删除" # Text used for deleting games.
DELETE_SOUND = RPG::SE.new("Collapse3", 100, 100) # Sound for deleting.
# These text settings adjust what displays in the help window.
SELECT_HELP = "请选择一个存档位置。"
LOAD_HELP = "读取你的游戏进度。"
SAVE_HELP = "储存你的游戏进度。"
DELETE_HELP = "删除你的游戏进度。"
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Status Window Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# This section adjusts how the status window appears in the middle of the
# screen (that displays the game's data) such as the total playtime, total
# times saved, total gold, the party's current location, and the variables
# to be displayed.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
EMPTY_TEXT = "没有存档" # Text used when no save data is present.
PLAYTIME = "游戏时间" # Text used for total playtime.
TOTAL_SAVE = "Total Saves: " # Text used to indicate total saves.
TOTAL_GOLD = "持有金钱:" # Text used to indicate total gold.
LOCATION = "存档地点:" # Text used to indicate current location.
# These variables will be shown in each of the two columns for those who
# would want to display more information than just what's shown. Input the
# variables into the arrays below to designate what data will be shown.
COLUMN1_VARIABLES = [1, 2, 3]
COLUMN2_VARIABLES = [4, 5, 6]
end # SAVE
end # YEA
#==============================================================================
# ?\ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================
#==============================================================================
# ?! Icon
#==============================================================================
module Icon
#--------------------------------------------------------------------------
# self.save_icon
#--------------------------------------------------------------------------
def self.save_icon; return YEA::SAVE::SAVE_ICON; end
#--------------------------------------------------------------------------
# self.empty_icon
#--------------------------------------------------------------------------
def self.empty_icon; return YEA::SAVE::EMPTY_ICON; end
end # Icon
#==============================================================================
# ?! Numeric
#==============================================================================
class Numeric
#--------------------------------------------------------------------------
# new method: group_digits
#--------------------------------------------------------------------------
unless $imported["YEA-CoreEngine"]
def group; return self.to_s; end
end # $imported["YEA-CoreEngine"]
end # Numeric
#==============================================================================
# ?! DataManager
#==============================================================================
module DataManager
#--------------------------------------------------------------------------
# overwrite method: savefile_max
#--------------------------------------------------------------------------
def self.savefile_max
return YEA::SAVE::MAX_FILES
end
#--------------------------------------------------------------------------
# overwrite method: self.make_save_header
#--------------------------------------------------------------------------
def self.make_save_header
header = {}
header[:characters] = $game_party.characters_for_savefile
header[:playtime_s] = $game_system.playtime_s
header[:system] = Marshal.load(Marshal.dump($game_system))
header[:timer] = Marshal.load(Marshal.dump($game_timer))
header[:message] = Marshal.load(Marshal.dump($game_message))
header[:switches] = Marshal.load(Marshal.dump($game_switches))
header[:variables] = Marshal.load(Marshal.dump($game_variables))
header[:self_switches] = Marshal.load(Marshal.dump($game_self_switches))
header[:actors] = Marshal.load(Marshal.dump($game_actors))
header[:party] = Marshal.load(Marshal.dump($game_party))
header[:troop] = Marshal.load(Marshal.dump($game_troop))
header[:map] = Marshal.load(Marshal.dump($game_map))
header[:player] = Marshal.load(Marshal.dump($game_player))
header
end
end # DataManager
#==============================================================================
# ?! Window_MenuCommand
#==============================================================================
class Window_MenuCommand < Window_Command
#--------------------------------------------------------------------------
# overwrite method: save_enabled
#--------------------------------------------------------------------------
def save_enabled; return true; end
end # Window_MenuCommand
#==============================================================================
# ?! Window_FileList
#==============================================================================
class Window_FileList < Window_Selectable
#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize(dx, dy)
super(dx, dy, 128, Graphics.height - dy)
refresh
activate
select(SceneManager.scene.first_savefile_index)
end
#--------------------------------------------------------------------------
# item_max
#--------------------------------------------------------------------------
def item_max; return DataManager.savefile_max; end
#--------------------------------------------------------------------------
# current_item_enabled?
#--------------------------------------------------------------------------
def current_item_enabled?
header = DataManager.load_header(index)
return false if header.nil? && SceneManager.scene_is?(Scene_Load)
return true
end
#--------------------------------------------------------------------------
# refresh
#--------------------------------------------------------------------------
def refresh
create_contents
draw_all_items
end
#--------------------------------------------------------------------------
# draw_item
#--------------------------------------------------------------------------
def draw_item(index)
header = DataManager.load_header(index)
enabled = !header.nil?
rect = item_rect(index)
rect.width -= 4
draw_icon(save_icon?(header), rect.x, rect.y, enabled)
change_color(normal_color, enabled)
text = sprintf(YEA::SAVE::SLOT_NAME, (index + 1).group)
draw_text(rect.x+24, rect.y, rect.width-24, line_height, text)
end
#--------------------------------------------------------------------------
# save_icon?
#--------------------------------------------------------------------------
def save_icon?(header)
return Icon.empty_icon if header.nil?
return Icon.save_icon
end
end # Window_FileList
#==============================================================================
# ?! Window_FileStatus
#==============================================================================
class Window_FileStatus < Window_Base
#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize(dx, dy, file_window)
super(dx, dy, Graphics.width - dx, Graphics.height - dy)
@file_window = file_window
@current_index = @file_window.index
refresh
end
#--------------------------------------------------------------------------
# update
#--------------------------------------------------------------------------
def update
super
return if @file_window.index < 0
return if @current_index == @file_window.index
@current_index = @file_window.index
refresh
end
#--------------------------------------------------------------------------
# refresh
#--------------------------------------------------------------------------
def refresh
contents.clear
reset_font_settings
@header = DataManager.load_header(@file_window.index)
if @header.nil?
draw_empty
else
draw_save_contents
end
end
#--------------------------------------------------------------------------
# draw_empty
#--------------------------------------------------------------------------
def draw_empty
colour = Color.new(0, 0, 0, translucent_alpha/2)
rect = Rect.new(0, 0, contents.width, contents.height)
contents.fill_rect(rect, colour)
text = YEA::SAVE::EMPTY_TEXT
change_color(system_color)
draw_text(rect, text, 1)
end
#--------------------------------------------------------------------------
# draw_save_slot
#--------------------------------------------------------------------------
def draw_save_slot(dx, dy, dw)
reset_font_settings
change_color(system_color)
text = sprintf(YEA::SAVE::SLOT_NAME, "")
draw_text(dx, dy, dw, line_height, text)
cx = text_size(text).width
change_color(normal_color)
draw_text(dx+cx, dy, dw-cx, line_height, (@file_window.index+1).group)
end
#--------------------------------------------------------------------------
# draw_save_playtime
#--------------------------------------------------------------------------
def draw_save_playtime(dx, dy, dw)
return if @header[:playtime_s].nil?
reset_font_settings
change_color(system_color)
draw_text(dx, dy, dw, line_height, YEA::SAVE::PLAYTIME, 0)
change_color(normal_color)
draw_text(dx, dy, dw, line_height, @header[:playtime_s], 2)
end
#--------------------------------------------------------------------------
# draw_save_total_saves
#--------------------------------------------------------------------------
def draw_save_total_saves(dx, dy, dw)
return if @header[:system].nil?
reset_font_settings
change_color(system_color)
text = YEA::SAVE::TOTAL_SAVE
draw_text(dx, dy, dw, line_height, text)
cx = text_size(text).width
change_color(normal_color)
draw_text(dx+cx, dy, dw-cx, line_height, @header[:system].save_count.group)
end
#--------------------------------------------------------------------------
# draw_save_gold
#--------------------------------------------------------------------------
def draw_save_gold(dx, dy, dw)
return if @header[:party].nil?
reset_font_settings
change_color(system_color)
draw_text(dx, dy, dw, line_height, YEA::SAVE::TOTAL_GOLD)
text = Vocab::currency_unit
draw_text(dx, dy, dw, line_height, text, 2)
cx = text_size(text).width
change_color(normal_color)
text = @header[:party].gold.group
draw_text(dx, dy, dw-cx, line_height, text, 2)
end
#--------------------------------------------------------------------------
# draw_save_location
#--------------------------------------------------------------------------
def draw_save_location(dx, dy, dw)
return if @header[:map].nil?
reset_font_settings
change_color(system_color)
draw_text(dx, dy, dw, line_height, YEA::SAVE::LOCATION)
change_color(normal_color)
cx = text_size(YEA::SAVE::LOCATION).width
return if $data_mapinfos[@header[:map].map_id].nil?
text = @header[:map].display_name
text = $data_mapinfos[@header[:map].map_id].name if text == ""
draw_text(dx+cx, dy, dw-cx, line_height, text)
end
#--------------------------------------------------------------------------
# draw_save_characters
#--------------------------------------------------------------------------
def draw_save_characters(dx, dy)
return if @header[:party].nil?
reset_font_settings
make_font_smaller
dw = (contents.width - dx) / @header[:party].max_battle_members
dx += dw/2
for member in @header[:party].battle_members
next if member.nil?
member = @header[:actors][member.id]
change_color(normal_color)
draw_actor_graphic(member, dx, dy)
text = member.name
draw_text(dx-dw/2, dy, dw, line_height, text, 1)
text = member.level.group
draw_text(dx-dw/2, dy-line_height, dw-4, line_height, text, 2)
cx = text_size(text).width
change_color(system_color)
text = Vocab::level_a
draw_text(dx-dw/2, dy-line_height, dw-cx-4, line_height, text, 2)
dx += dw
end
end
#--------------------------------------------------------------------------
# draw_save_column1
#--------------------------------------------------------------------------
def draw_save_column1(dx, dy, dw)
data = YEA::SAVE::COLUMN1_VARIABLES
draw_column_data(data, dx, dy, dw)
end
#--------------------------------------------------------------------------
# draw_save_column2
#--------------------------------------------------------------------------
def draw_save_column2(dx, dy, dw)
data = YEA::SAVE::COLUMN2_VARIABLES
draw_column_data(data, dx, dy, dw)
end
#--------------------------------------------------------------------------
# draw_column_data
#--------------------------------------------------------------------------
def draw_column_data(data, dx, dy, dw)
return if @header[:variables].nil?
reset_font_settings
for variable_id in data
next if $data_system.variables[variable_id].nil?
change_color(system_color)
name = $data_system.variables[variable_id]
draw_text(dx, dy, dw, line_height, name, 0)
value = @header[:variables][variable_id].group
change_color(normal_color)
draw_text(dx, dy, dw, line_height, value, 2)
dy += line_height
end
end
#--------------------------------------------------------------------------
# draw_save_contents
#--------------------------------------------------------------------------
def draw_save_contents
draw_save_slot(4, 0, contents.width/2-8)
draw_save_playtime(contents.width/2+4, 0, contents.width/2-8)
draw_save_total_saves(4, line_height, contents.width/2-8)
draw_save_gold(contents.width/2+4, line_height, contents.width/2-8)
draw_save_location(4, line_height*2, contents.width-8)
draw_save_characters(0, line_height*5 + line_height/3)
draw_save_column1(16, line_height*7, contents.width/2-48)
draw_save_column2(contents.width/2+16, line_height*7, contents.width/2-48)
end
end # Window_FileStatus
#==============================================================================
# ?! Window_FileAction
#==============================================================================
class Window_FileAction < Window_HorzCommand
#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize(dx, dy, file_window)
@file_window = file_window
super(dx, dy)
deactivate
unselect
end
#--------------------------------------------------------------------------
# window_width
#--------------------------------------------------------------------------
def window_width; Graphics.width - 128; end
#--------------------------------------------------------------------------
# col_max
#--------------------------------------------------------------------------
def col_max; return 3; end
#--------------------------------------------------------------------------
# update
#--------------------------------------------------------------------------
def update
super
return if @file_window.index < 0
return if @current_index == @file_window.index
@current_index = @file_window.index
refresh
end
#--------------------------------------------------------------------------
# make_command_list
#--------------------------------------------------------------------------
def make_command_list
@header = DataManager.load_header(@file_window.index)
add_load_command
add_save_command
add_delete_command
end
#--------------------------------------------------------------------------
# add_load_command
#--------------------------------------------------------------------------
def add_load_command
add_command(YEA::SAVE::ACTION_LOAD, :load, load_enabled?)
end
#--------------------------------------------------------------------------
# load_enabled?
#--------------------------------------------------------------------------
def load_enabled?
return false if @header.nil?
return true
end
#--------------------------------------------------------------------------
# add_save_command
#--------------------------------------------------------------------------
def add_save_command
add_command(YEA::SAVE::ACTION_SAVE, :save, save_enabled?)
end
#--------------------------------------------------------------------------
# save_enabled?
#--------------------------------------------------------------------------
def save_enabled?
return false if @header.nil? && SceneManager.scene_is?(Scene_Load)
return false if SceneManager.scene_is?(Scene_Load)
return false if $game_system.save_disabled
return true
end
#--------------------------------------------------------------------------
# add_delete_command
#--------------------------------------------------------------------------
def add_delete_command
add_command(YEA::SAVE::ACTION_DELETE, :delete, delete_enabled?)
end
#--------------------------------------------------------------------------
# delete_enabled?
#--------------------------------------------------------------------------
def delete_enabled?
return false if @header.nil?
return true
end
#--------------------------------------------------------------------------
# update_help
#--------------------------------------------------------------------------
def update_help
case current_symbol
when :load; @help_window.set_text(YEA::SAVE::LOAD_HELP)
when :save; @help_window.set_text(YEA::SAVE::SAVE_HELP)
when :delete; @help_window.set_text(YEA::SAVE::DELETE_HELP)
end
end
end # Window_FileAction
#==============================================================================
# ?! Scene_File
#==============================================================================
class Scene_File < Scene_MenuBase
#--------------------------------------------------------------------------
# overwrite method: start
#--------------------------------------------------------------------------
def start
super
create_all_windows
end
#--------------------------------------------------------------------------
# overwrite method: terminate
#--------------------------------------------------------------------------
def terminate
super
end
#--------------------------------------------------------------------------
# overwrite method: update
#--------------------------------------------------------------------------
def update
super
end
#--------------------------------------------------------------------------
# new method: create_all_windows
#--------------------------------------------------------------------------
def create_all_windows
create_help_window
create_file_window
create_action_window
create_status_window
end
#--------------------------------------------------------------------------
# overwrite method: create_help_window
#--------------------------------------------------------------------------
def create_help_window
@help_window = Window_Help.new
@help_window.set_text(YEA::SAVE::SELECT_HELP)
end
#--------------------------------------------------------------------------
# new method: create_file_window
#--------------------------------------------------------------------------
def create_file_window
wy = @help_window.height
@file_window = Window_FileList.new(0, wy)
@file_window.set_handler(:ok, method(:on_file_ok))
@file_window.set_handler(:cancel, method(:return_scene))
end
#--------------------------------------------------------------------------
# new method: create_action_window
#--------------------------------------------------------------------------
def create_action_window
wx = @file_window.width
wy = @help_window.height
@action_window = Window_FileAction.new(wx, wy, @file_window)
@action_window.help_window = @help_window
@action_window.set_handler(:cancel, method(:on_action_cancel))
@action_window.set_handler(:load, method(:on_action_load))
@action_window.set_handler(:save, method(:on_action_save))
@action_window.set_handler(:delete, method(:on_action_delete))
end
#--------------------------------------------------------------------------
# new method: create_status_window
#--------------------------------------------------------------------------
def create_status_window
wx = @action_window.x
wy = @action_window.y + @action_window.height
@status_window = Window_FileStatus.new(wx, wy, @file_window)
end
#--------------------------------------------------------------------------
# new method: on_file_ok
#--------------------------------------------------------------------------
def on_file_ok
@action_window.activate
index = SceneManager.scene_is?(Scene_Load) ? 0 : 1
@action_window.select(index)
end
#--------------------------------------------------------------------------
# new method: on_action_cancel
#--------------------------------------------------------------------------
def on_action_cancel
@action_window.unselect
@file_window.activate
@help_window.set_text(YEA::SAVE::SELECT_HELP)
end
#--------------------------------------------------------------------------
# new method: on_action_load
#--------------------------------------------------------------------------
def on_action_load
if DataManager.load_game(@file_window.index)
on_load_success
else
Sound.play_buzzer
end
end
#--------------------------------------------------------------------------
# overwrite method: on_load_success
#--------------------------------------------------------------------------
def on_load_success
Sound.play_load
fadeout_all
$game_system.on_after_load
SceneManager.goto(Scene_Map)
end
#--------------------------------------------------------------------------
# new method: on_action_save
#--------------------------------------------------------------------------
def on_action_save
@action_window.activate
if DataManager.save_game(@file_window.index)
on_save_success
refresh_windows
else
Sound.play_buzzer
end
end
#--------------------------------------------------------------------------
# overwrite method: on_save_success
#--------------------------------------------------------------------------
def on_save_success; Sound.play_save; end
#--------------------------------------------------------------------------
# new method: on_action_delete
#--------------------------------------------------------------------------
def on_action_delete
@action_window.activate
DataManager.delete_save_file(@file_window.index)
on_delete_success
refresh_windows
end
#--------------------------------------------------------------------------
# new method: on_delete_success
#--------------------------------------------------------------------------
def on_delete_success
YEA::SAVE::DELETE_SOUND.play
end
#--------------------------------------------------------------------------
# new method: refresh_windows
#--------------------------------------------------------------------------
def refresh_windows
@file_window.refresh
@action_window.refresh
@status_window.refresh
end
end # Scene_File
#==============================================================================
# ?! Scene_Save
#==============================================================================
class Scene_Save < Scene_File
#--------------------------------------------------------------------------
# overwrite method: on_savefile_ok
#--------------------------------------------------------------------------
def on_savefile_ok; super; end
#--------------------------------------------------------------------------
# overwrite method: on_save_success
#--------------------------------------------------------------------------
def on_save_success; super; end
end # help_window_text
#==============================================================================
# ?! Scene_Load
#==============================================================================
class Scene_Load < Scene_File
#--------------------------------------------------------------------------
# overwrite method: on_savefile_ok
#--------------------------------------------------------------------------
def on_savefile_ok; super; end
#--------------------------------------------------------------------------
# overwrite method: on_load_success
#--------------------------------------------------------------------------
def on_load_success; super; end
end # Scene_Load
#==============================================================================
#
# ?\ End of File
#
#==============================================================================
[/pre]
[pre lang="ruby"]#==============================================================================
#
# ▼ 养肥系统 AceEngine Ace - 存档系统插件: 开始新游戏增强 v1.00
# -- 最终更新: 2011.12.26
# -- 等级: 普通人能够用的脚本
# -- 要求插入脚本: YEA - Ace Save Engine v1.01+
# -- 无节操的顺手翻译: 喵呜喵5
#
#==============================================================================
$imported = {} if $imported.nil?
$imported["YEA-NewGame+"] = true
#==============================================================================
# ▼ 更新日志
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2011.12.26 - 开始写并且写完了~#
#==============================================================================
# ▼ 介绍
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 这脚本能够实现继承存档的功能,详细的说明太长懒得翻译
#
#==============================================================================
# ▼ 使用方法
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 脚本扔到▼ Materials/素材 下 ▼ Main 以上
# 记得保存,总之就是个没啥特殊用法的脚本啦
#
# -----------------------------------------------------------------------------
# 物品备注 - 如果把下面的<no carry over>扔到对应物品的备注栏里
# -----------------------------------------------------------------------------
# <no carry over>
#
# 就不会被继承到新游戏中了
#
# -----------------------------------------------------------------------------
# 武器备注 - 同上
# -----------------------------------------------------------------------------
# <no carry over>
#
# -----------------------------------------------------------------------------
# 防具备注 - 同上
# -----------------------------------------------------------------------------
# <no carry over>
#
#==============================================================================
# ▼ 注意
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 这是VA脚本不是VX脚本#
#
# 这脚本还需要养肥引擎脚本Yanfly Engine Ace - Ace Save Engine v1.01+
# 并且在编辑器中的位置必须比引擎脚本更下
#
#==============================================================================
module YEA
module NEW_GAME_PLUS
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - 普通设置 -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# 帮助文字
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
NGP_SWITCH = 1 # 开关打开的时候存档将显示周目标志.
NGP_TEXT = "可继承" # 显示周目标志的文字.
# 能够继承存档的时候帮助窗口的提示文字
NGP_HELP = "使用这个存档开始游戏."
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - 需要继承的内容 -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# 看清楚了再设置
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# 需要继承的开关
CARRY_OVER_SWITCHES = [14]
# 需要继承的变量
CARRY_OVER_VARIABLES = [1,2]
# 设置成 false 的话不继承角色信息
CARRY_OVER_ACTORS = true
# 继承角色等级、继承角色装备、继承角色技能
# 上面那个角色信息不继承的话这下面三个也继承不了
CARRY_OVER_LEVELS = true
CARRY_OVER_EQUIPS = true
CARRY_OVER_SKILLS = true
# 继承队伍成员
CARRY_OVER_PARTY_MEMBERS = false
# 继承金钱、物品、道具、装备
CARRY_OVER_GOLD = true
CARRY_OVER_ITEMS = true
CARRY_OVER_WEAPONS = true
CARRY_OVER_ARMOURS = true
end # 别理这行
end # 也别理这行
#==============================================================================
# ▼ 看不懂的话就别碰这以下的脚本了
#==============================================================================
#==============================================================================
# ▼ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================
if $imported["YEA-SaveEngine"]
module YEA
module NEW_GAME_PLUS
module_function
#--------------------------------------------------------------------------
# convert_integer_array
#--------------------------------------------------------------------------
def convert_integer_array(array)
result = []
array.each { |i|
case i
when Range; result |= i.to_a
when Integer; result |=
end }
return result
end
#--------------------------------------------------------------------------
# converted_contants
#--------------------------------------------------------------------------
CARRY_OVER_SWITCHES = convert_integer_array(CARRY_OVER_SWITCHES)
CARRY_OVER_VARIABLES = convert_integer_array(CARRY_OVER_VARIABLES)
end # NEW_GAME_PLUS
module REGEXP
module BASEITEM
NO_CARRY_OVER = /<(?:NO_CARRY_OVER|no carry over)>/i
end # BASEITEM
end # REGEXP
end # YEA
#==============================================================================
# ■ DataManager
#==============================================================================
module DataManager
#--------------------------------------------------------------------------
# alias method: load_database
#--------------------------------------------------------------------------
class <<self; alias load_database_ngp load_database; end
def self.load_database
load_database_ngp
load_notetags_ngp
end
#--------------------------------------------------------------------------
# new method: load_notetags_ngp
#--------------------------------------------------------------------------
def self.load_notetags_ngp
groups = [$data_items, $data_weapons, $data_armors]
for group in groups
for obj in group
next if obj.nil?
obj.load_notetags_ngp
end
end
end
end # DataManager
#==============================================================================
# ■ RPG::BaseItem
#==============================================================================
class RPG::BaseItem
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :no_carry_over
#--------------------------------------------------------------------------
# common cache: load_notetags_ngp
#--------------------------------------------------------------------------
def load_notetags_ngp
@no_carry_over = false
#---
self.note.split(/[\r\n]+/).each { |line|
case line
#---
when YEA::REGEXP::BASEITEM::NO_CARRY_OVER
@no_carry_over = true
end
} # self.note.split
#---
end
end # RPG::BaseItem
#==============================================================================
# ■ Switch
#==============================================================================
module Switch
#--------------------------------------------------------------------------
# self.new_game_plus
#--------------------------------------------------------------------------
def self.new_game_plus
return $game_switches[YEA::NEW_GAME_PLUS::NGP_SWITCH]
end
end # Switch
#==============================================================================
# ■ DataManager
#==============================================================================
module DataManager
#--------------------------------------------------------------------------
# new method: setup_new_game_plus
#--------------------------------------------------------------------------
def self.setup_new_game_plus(index)
create_new_game_plus_objects(index)
$game_map.setup($data_system.start_map_id)
$game_player.moveto($data_system.start_x, $data_system.start_y)
$game_player.refresh
Graphics.frame_count = 0
end
#--------------------------------------------------------------------------
# new method: create_new_game_plus_objects
#--------------------------------------------------------------------------
def self.create_new_game_plus_objects(index)
load_game_without_rescue(index)
ngp_reset_switches
ngp_reset_variables
ngp_reset_self_switches
ngp_reset_actors
ngp_reset_party
end
#--------------------------------------------------------------------------
# new method: ngp_reset_switches
#--------------------------------------------------------------------------
def self.ngp_reset_switches
for i in 0...$data_system.switches.size
next if i <= 0
next if YEA::NEW_GAME_PLUS::CARRY_OVER_SWITCHES.include?(i)
$game_switches = false
end
end
#--------------------------------------------------------------------------
# new method: ngp_reset_variables
#--------------------------------------------------------------------------
def self.ngp_reset_variables
for i in 0...$data_system.variables.size
next if i <= 0
next if YEA::NEW_GAME_PLUS::CARRY_OVER_VARIABLES.include?(i)
$game_variables = 0
end
end
#--------------------------------------------------------------------------
# new method: ngp_reset_self_switches
#--------------------------------------------------------------------------
def self.ngp_reset_self_switches
$game_self_switches = Game_SelfSwitches.new
end
#--------------------------------------------------------------------------
# new method: ngp_reset_actors
#--------------------------------------------------------------------------
def self.ngp_reset_actors
unless YEA::NEW_GAME_PLUS::CARRY_OVER_ACTORS
$game_actors = Game_Actors.new
else
#---
unless YEA::NEW_GAME_PLUS::CARRY_OVER_LEVELS
for i in 0...$data_actors.size
actor = $game_actors
next if actor.nil?
actor.new_game_plus_levels
end
end
#---
unless YEA::NEW_GAME_PLUS::CARRY_OVER_EQUIPS
for i in 0...$data_actors.size
actor = $game_actors
next if actor.nil?
actor.new_game_plus_equips
end
end
#---
unless YEA::NEW_GAME_PLUS::CARRY_OVER_SKILLS
for i in 0...$data_actors.size
actor = $game_actors
next if actor.nil?
actor.new_game_plus_skills
end
end
#---
end
end
#--------------------------------------------------------------------------
# new method: ngp_reset_party
#--------------------------------------------------------------------------
def self.ngp_reset_party
gold = 0
items = {}
members = []
#---
if YEA::NEW_GAME_PLUS::CARRY_OVER_PARTY_MEMBERS
for member in $game_party.members
members.push(member.id)
end
end
#---
gold = $game_party.gold if YEA::NEW_GAME_PLUS::CARRY_OVER_GOLD
#---
if YEA::NEW_GAME_PLUS::CARRY_OVER_ITEMS
for item in $data_items
next if item.nil?
next if item.no_carry_over
items[item] = $game_party.item_number(item)
end
end
#---
if YEA::NEW_GAME_PLUS::CARRY_OVER_WEAPONS
for item in $data_weapons
next if item.nil?
next if item.no_carry_over
items[item] = $game_party.item_number(item)
end
end
#---
if YEA::NEW_GAME_PLUS::CARRY_OVER_ARMOURS
for item in $data_armors
next if item.nil?
next if item.no_carry_over
items[item] = $game_party.item_number(item)
end
end
#---
$game_party = Game_Party.new
unless YEA::NEW_GAME_PLUS::CARRY_OVER_PARTY_MEMBERS
$game_party.setup_starting_members
end
#---
for member_id in members
$game_party.add_actor(member_id)
end
$game_party.gain_gold(gold)
for key in items
item = key[0]
next if item.nil?
$game_party.gain_item(item, key[1])
end
end
end # DataManager
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# new method: new_game_plus_levels
#--------------------------------------------------------------------------
def new_game_plus_levels
@class_id = actor.class_id
@level = actor.initial_level
@exp = {}
if $imported["YEA-ClassSystem"]
init_unlocked_classes
init_subclass
end
clear_param_plus
init_exp
refresh
end
#--------------------------------------------------------------------------
# new method: new_game_plus_equips
#--------------------------------------------------------------------------
def new_game_plus_equips
init_equips(actor.equips)
end
#--------------------------------------------------------------------------
# new method: new_game_plus_skills
#--------------------------------------------------------------------------
def new_game_plus_skills
init_skills
end
end # Game_Actor
#==============================================================================
# ■ Window_FileAction
#==============================================================================
class Window_FileAction < Window_HorzCommand
#--------------------------------------------------------------------------
# alias method: add_load_command
#--------------------------------------------------------------------------
alias add_load_command_ngp add_load_command
def add_load_command
if new_game_plus?
add_command(YEA::NEW_GAME_PLUS::NGP_TEXT, :new_game_plus)
else
add_load_command_ngp
end
end
#--------------------------------------------------------------------------
# new method: new_game_plus?
#--------------------------------------------------------------------------
def new_game_plus?
return false if @header.nil?
return false if @header[:switches].nil?
return @header[:switches][YEA::NEW_GAME_PLUS::NGP_SWITCH]
end
#--------------------------------------------------------------------------
# alias method: update_help
#--------------------------------------------------------------------------
alias update_help_ngp update_help
def update_help
case current_symbol
when :new_game_plus; @help_window.set_text(YEA::NEW_GAME_PLUS::NGP_HELP)
else; update_help_ngp
end
end
end # Window_FileAction
#==============================================================================
# ■ Scene_File
#==============================================================================
class Scene_File < Scene_MenuBase
#--------------------------------------------------------------------------
# alias method: create_action_window
#--------------------------------------------------------------------------
alias create_action_window_ngp create_action_window
def create_action_window
create_action_window_ngp
@action_window.set_handler(:new_game_plus, method(:on_action_ngp))
end
#--------------------------------------------------------------------------
# new method: on_action_ngp
#--------------------------------------------------------------------------
def on_action_ngp
Sound.play_load
DataManager.setup_new_game_plus(@file_window.index)
fadeout_all
$game_system.on_after_load
SceneManager.goto(Scene_Map)
end
end # Scene_File
end # $imported["YEA-SaveEngine"]
#==============================================================================
#
# ▼ End of File
#
#==============================================================================[/pre] |
|