其实在国外素材还真的叫战斗图,虽然我个人也觉得那与立绘的描绘方法一样,但战斗图这个名称应该是延用以前版本的叫法,拿来与一般立绘图作为区分似乎也不错。
如果要在原来的存档界面放战斗图,是放不下的,不过,也不需要放得下,其实描绘的图超过描绘区域的部份只是看不到而已,在区域内的图还是看得到的,像这样:
但是,注意到有什么不对的地方吗?没错,战斗图有重覆!
因为默认的存档,它的 header 内容中只有行走图档案名 character_name,行走图第几组 Character_index, 存档时游戏时间 playtime 三项,
没有角色 id 资料,要怎么知道显示哪个角色的战斗图?上面的范例是直接取 Character_index 来显示,当 character_name 不同,这肯定会出错的,
那么,就要在存档时,加上参战角色 id,也就是队伍的前四位,并且在读取存档的 header 画战斗图时,用角色 id 来取图档。
知道这些之后,可以开始改脚本了,我们尽可能不要删掉原来的脚本内容,只把它注释起来,以保留恢复的可能性。
首先,最重要的存档时档头 header 加上参战成员的 id 资料,先到 Game_Party 脚本,这是处理队员的类,所以在这儿要加上存档档案显示用的角色图像讯息,
原本是 def characters_for_savefile 行走图,我们要加一个战斗图的,所以在它的 end 下加一段:
#-------------------------------------------------------------------------- # ● 存档档案显示用的角色战斗图像讯息 #-------------------------------------------------------------------------- def battlers_for_savefile battle_members.collect do |actor| [actor.name, actor.id] end end
#--------------------------------------------------------------------------
# ● 存档档案显示用的角色战斗图像讯息
#--------------------------------------------------------------------------
def battlers_for_savefile
battle_members.collect do |actor|
[actor.name, actor.id]
end
end
这样,会存入角色的名称和ID,为什么要存两个?其实只存一个 ID 也可以,但假如您的战斗图用角色名称当作档名时,有角色名称就方便了,预作另一种选择而已。
跟着,要打开 DataManager 脚本,找到生成存档的档头资料 def self.make_save_header,整个改成这样:
#-------------------------------------------------------------------------- # ● 生成存档的头资料 #-------------------------------------------------------------------------- def self.make_save_header header = {} header[:characters] = $game_party.characters_for_savefile header[:battlers] = $game_party.battlers_for_savefile #多了这一行 header[:playtime_s] = $game_system.playtime_s header end
#--------------------------------------------------------------------------
# ● 生成存档的头资料
#--------------------------------------------------------------------------
def self.make_save_header
header = {}
header[:characters] = $game_party.characters_for_savefile
header[:battlers] = $game_party.battlers_for_savefile #多了这一行
header[:playtime_s] = $game_system.playtime_s
header
end
改好存档,这么一来,游戏存档时就会增附参战成员的名称与ID,读取档头也可以知道成员名称和ID了。
那再来,就是怎么把存读档画面的行走图改换成战斗图,打开 Window_SaveFile 脚本,找到绘制队伍角色 def draw_party_characters(x, y) 那一段,在它的 end 下方加一段:
#-------------------------------------------------------------------------- # ● 绘制队伍角色战斗图 #-------------------------------------------------------------------------- def draw_party_battler cw = 0 header = DataManager.load_header(@file_index) return unless header header[:battlers].each_with_index do |data, i| p header[:battlers] bitmap = Cache.load_bitmap("Graphics/Party/", "Battler_#{data[1]}") rect = Rect.new(0, 0, bitmap.width, bitmap.height) contents.blt(cw, 0, bitmap, rect, 255) bitmap.dispose cw += 100 #每画一张战斗图后,下一张图 x 位置加 100,也就是每 100 距离画一张战斗图 end end
#--------------------------------------------------------------------------
# ● 绘制队伍角色战斗图
#--------------------------------------------------------------------------
def draw_party_battler
cw = 0
header = DataManager.load_header(@file_index)
return unless header
header[:battlers].each_with_index do |data, i|
p header[:battlers]
bitmap = Cache.load_bitmap("Graphics/Party/", "Battler_#{data[1]}")
rect = Rect.new(0, 0, bitmap.width, bitmap.height)
contents.blt(cw, 0, bitmap, rect, 255)
bitmap.dispose
cw += 100 #每画一张战斗图后,下一张图 x 位置加 100,也就是每 100 距离画一张战斗图
end
end
然后,在重新整理 def refresh 那边,将 draw_party_characters(152, 58) 注释起来,这就是绘行走图的,在它的下方加一行:
好,存档,脚本改到这儿就结束了。
但,还有一个工作要做,战斗图!对,战斗图我预设是另外放在 Graphics/Party 下的,默认没有这个 Party 资料夹,所以要自己建一个,再把战斗图放进去,
战斗图我脚本中预设的是以 ID 为档名,加上前缀 battler_ 所以档名像这样:
battler_1.png battler_2.png battler_3.png
battler_1.png
battler_2.png
battler_3.png
如果您想用角色名称当作档名,可以把上面脚本中的 "Battler_#{data[1]}" 删掉,改成 data[0],并且您的战斗图档名格式为:
测试截图:
大致上,改法就是如此,至于战斗图的排列位置和距离,这您自己去按自己喜好改吧。
讲完,收工。
|