本帖最后由 j433463 于 2013-6-21 01:29 编辑
其实存档没有想像中难,在 DataManager 脚本中,有一个生成存档的头数据 def self.make_save_header 专门用来放存档档头资料的,
什么意思呢?就是在存档与读档画面中的那些东西,如图:
存档 2 中,有队伍角色行走图,有存档游戏时间,这些就是放在存档头数据中的,在 def self.make_save_header 程序是这样子:
def self.make_save_header header = {} #建立一个空的 header hash header[:characters] = $game_party.characters_for_savefile #建立名为 :characters 的 header 变量,存放 Game_Party 中 def characters_for_savefile 的结果 header[:playtime_s] = $game_system.playtime_s #建立名为 :playtime_s 的 header 变量,存放 Game_System 中 def playtime_s 的结果 header end
def self.make_save_header
header = {} #建立一个空的 header hash
header[:characters] = $game_party.characters_for_savefile #建立名为 :characters 的 header 变量,存放 Game_Party 中 def characters_for_savefile 的结果
header[:playtime_s] = $game_system.playtime_s #建立名为 :playtime_s 的 header 变量,存放 Game_System 中 def playtime_s 的结果
header
end
这很明白了,characters_for_savefile 就是角色的图像讯息,也就行走图,它包含了 actor.character_name 和 actor.character_index,也就是行走图的档名和行走图中第几个图的索引,
playtime_s 就是游戏时间,这两个,也就是存档 2 的行走图和存档时间。
所以楼主要加上角色1的名字,很简单嘛!就是在这 def self.make_save_header 中把角色1 名字加进去,像这样:
def self.make_save_header header = {} header[:actor_1] = $game_actors[1].name header[:characters] = $game_party.characters_for_savefile header[:playtime_s] = $game_system.playtime_s header end
def self.make_save_header
header = {}
header[:actor_1] = $game_actors[1].name
header[:characters] = $game_party.characters_for_savefile
header[:playtime_s] = $game_system.playtime_s
header
end
建立一个名为 :actor_1 的 header 变量,并且把 $game_actors[1].name 第一个角色的名字存放到这变量中,在存档时,档头就有第一个角色的名字了。
当然,这样只是存档而已,要怎么读档呢?那就是 Widnow_SaveFile 的工作,看这脚本名称您可能误会它是存档的脚本,其实不是,看看它最顶端的注解,
存档画面和读档画面中显示存档档案的视窗。
显示存档档案的视窗,意思就是存档和读档时的画面,就是上面那张存档 2 的那个画面,这脚本就是做这个事的,不要被脚本名骗了,
仔细看看 def refresh 的内容:
def refresh contents.clear #清空画面 change_color(normal_color) #改变颜色设定为正常色 name = Vocab::File + " #{@file_index + 1}" #name 名称格式为 存档n 也就是 存档1 存档2 .... draw_text(4, 0, 200, line_height, name) #描绘 name @name_width = text_size(name).width #取得 name 名称宽度 draw_party_characters(152, 58) #描绘角色行走图 draw_playtime(0, contents.height - line_height, contents.width - 4, 2) #描绘存档游戏时间 end
def refresh
contents.clear #清空画面
change_color(normal_color) #改变颜色设定为正常色
name = Vocab::File + " #{@file_index + 1}" #name 名称格式为 存档n 也就是 存档1 存档2 ....
draw_text(4, 0, 200, line_height, name) #描绘 name
@name_width = text_size(name).width #取得 name 名称宽度
draw_party_characters(152, 58) #描绘角色行走图
draw_playtime(0, contents.height - line_height, contents.width - 4, 2) #描绘存档游戏时间
end
我想,看到这您也许就明白了,这一段就是在显示存档读档的画面,那个存档2,行走图和游戏时间,就是在这个地方描绘的,所以,要加上角色一的名称,就是找个地方自己加上去,
譬如:
def refresh contents.clear change_color(normal_color) name = Vocab::File + " #{@file_index + 1}" draw_text(4, 0, 200, line_height, name) @name_width = text_size(name).width draw_party_characters(152, 58) draw_playtime(0, contents.height - line_height, contents.width - 4, 2) header = DataManager.load_header(@file_index) #取得档头资料 return unless header #如果没有 header 档头资料就 return 结束这个 def draw_text(100, 0, 200, line_height, header[:actor_1]) #在 100,0 的位置显示角色一的名字 end
def refresh
contents.clear
change_color(normal_color)
name = Vocab::File + " #{@file_index + 1}"
draw_text(4, 0, 200, line_height, name)
@name_width = text_size(name).width
draw_party_characters(152, 58)
draw_playtime(0, contents.height - line_height, contents.width - 4, 2)
header = DataManager.load_header(@file_index) #取得档头资料
return unless header #如果没有 header 档头资料就 return 结束这个 def
draw_text(100, 0, 200, line_height, header[:actor_1]) #在 100,0 的位置显示角色一的名字
end
要注意的是档头资料一定要读取的动作,然后才能去描绘角色一的名字。
您看,不难吧?当您明白 VA 的存档读档,其实很容易改的,不像 XP 或 VX,需要做一些其它的补充,VA 的存读档就这么单纯直接。
之前有帖子问怎么把存档读档的行走图改成脸图,现在您想到没有?就是在 def self.make_save_header 那边加上战斗者的脸图档名和索引,
然后在 Window_SaveFile 这边的 def refresh 中,改掉 draw_party_characters(152, 58) 这个画行走图的方法,换成画脸图的就行了,
其实没有什么技巧的,很容易的,可是一般你不会知道,因为你没有注意 VA 的存档读档脚本内容,你就会以为很难,事实并不是。
|