楼主: asdwds

[已经解决] 请问如何使存档显示角色图像和地图名

[复制链接]
梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
回帖
1526
发表于 2013-6-25 07:53:49 | 显示全部楼层
容量限制?没有吧,我都能正常做到显示角色图像和地图名:

s1.png

这是我尝试仿轩辕剑存档格式画面的截图,我有成功了喔!
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
回帖
1526
发表于 2013-6-25 08:35:37 | 显示全部楼层
1. 在 DataManager 的 def self.make_save_header 是这样的:

[pre lang="ruby" line="1"]  def self.make_save_header
    header = {}
    header[:characters] = $game_party.characters_for_savefile
    header[:playtime_s] = $game_system.playtime_s
    header[:mapname] = ($game_map.display_name.size > 0 ? $game_map.display_name : '未命名')
    header[:faces] = $game_party.faces_for_savefile
    header
  end
[/pre]

2. 在 Game_Party 的 def characters_for_savefile 下方,加这么一行:

[pre lang="ruby" line="1"]  #--------------------------------------------------------------------------
  # ● 存档档案显示用的角色脸图讯息
  #--------------------------------------------------------------------------
  def faces_for_savefile
    battle_members.collect do |actor|
      [actor.face_name, actor.face_index]
    end
  end
[/pre]

3. 在 Window_SaveFile 的 def refresh 要这样改:

[pre lang="ruby" line="1"]  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_party_faces(80, 58) #<--- 描绘脸图
    draw_playtime(0, contents.height - line_height, contents.width - 4, 2)
    header = DataManager.load_header(@file_index)
    return unless header
    draw_text(620, 0, 200, line_height, header[:mapname])  #<--- 描绘地图名
  end
[/pre]

然后,在 def draw_party_characters(x, y) 的下方,加这么一段:

[pre lang="ruby" line="1"]  def draw_party_characters(x, y)
    header = DataManager.load_header(@file_index)
    return unless header
    header[:faces].each_with_index do |data, i|
      draw_face(data[0], data[1], x + i * 96, 10)
    end
  end
[/pre]


就这样而已,没有那么复杂...



点评

真心我一开始也这么写,然后就不允许保存游戏了。而且现在也只显示1个角色  发表于 2013-6-26 21:31

评分

参与人数 1星屑 +100 收起 理由
Sion + 100 感谢帮忙

查看全部评分

修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
256 小时
注册时间
2013-5-27
回帖
187
发表于 2013-6-26 18:56:56 | 显示全部楼层
实际上LZ还不如用图书馆里那个截图存档,然后在那个脚本里改一改。

点评

等有空我也研究一下,RGSS3不是很懂。我是想做成11L这个效果再加大截图,并且下面带人物信息,地图名和时间。  发表于 2013-6-26 22:21
當我想開一個帖問如何改那個图书馆里那个截图存档腳本+地圖名時,我發現了這個帖  发表于 2013-6-26 21:59
其实我已经勉强弄成了,只是不能理解为什么会发生不能存档的问题  发表于 2013-6-26 21:43
回复

使用道具 举报

梦石
0
星屑
50
在线时间
54 小时
注册时间
2013-1-3
回帖
111
 楼主| 发表于 2013-6-26 21:41:50 | 显示全部楼层
j433463 发表于 2013-6-25 08:35
1. 在 DataManager 的 def self.make_save_header 是这样的:

  def self.make_save_header

以下使用后,会触发on_savefile_ok的else条件
#==============================================================================
# ■ Game_Party
#==============================================================================
  def faces_for_savefile
    battle_members.collect do |actor|
    [actor.face_name, actor.face_index]
  end
end
#==============================================================================
# ■ Window_SaveFile
#==============================================================================
class Window_SaveFile < Window_Base

  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_faces(80, 58) #<--- 描绘脸图
   draw_playtime(0, contents.height - line_height, contents.width - 4, 2)
    header = DataManager.load_header(@file_index)
    return unless header
    draw_text(620, 0, 200, line_height, header[:mapname])  #<--- 描绘地图名
end

  def draw_party_faces(x, y)
    header = DataManager.load_header(@file_index)
    return unless header
    header[:faces].each_with_index do |data, i|
    draw_face(data[0], data[1], x + i * 96, 10)
    end
  end
  
end


#==============================================================================
# ■ DataManager
#==============================================================================
module DataManager
  def self.make_save_header
    header = {}
    header[:characters] = $game_party.characters_for_savefile
    header[:playtime_s] = $game_system.playtime_s
    header[:mapname] = $game_map.display_name
    header[:faces] = $game_party.faces_for_savefile
    header
  end
  
end
1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部