设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4090|回复: 2
打印 上一主题 下一主题

[已经解决] 存档界面显示角色名

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
381 小时
注册时间
2012-8-13
帖子
113
跳转到指定楼层
1
发表于 2013-6-20 19:05:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 tyq4590 于 2013-6-21 15:54 编辑

我想在va默认的Window_SaveFile里添加一项显示1号角色名字(注:是数据库里1号角色的名字而不是队伍里第一个角色的名字)的功能(由于我用了改名脚本,因此每个档案的1号角色的名字都不相同,因此可以藉此鉴别不同的存档)。不知应该怎么修改Window_SaveFile来达到这个效果呢?望高手指点!(由于我需要Va默认的存档界面排列格式,因此完全重写存档功能的那些脚本我无法使用!)

已经解决!

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
2
发表于 2013-6-21 01:12:57 | 只看该作者
本帖最后由 j433463 于 2013-6-21 01:29 编辑

其实存档没有想像中难,在 DataManager 脚本中,有一个生成存档的头数据 def self.make_save_header 专门用来放存档档头资料的,

什么意思呢?就是在存档与读档画面中的那些东西,如图:



存档 2 中,有队伍角色行走图,有存档游戏时间,这些就是放在存档头数据中的,在 def self.make_save_header 程序是这样子:

RUBY 代码复制
  1. def self.make_save_header
  2.     header = {} #建立一个空的 header hash
  3.     header[:characters] = $game_party.characters_for_savefile #建立名为 :characters 的 header 变量,存放 Game_Party 中 def characters_for_savefile 的结果
  4.     header[:playtime_s] = $game_system.playtime_s #建立名为 :playtime_s 的 header 变量,存放 Game_System 中 def playtime_s 的结果
  5.     header
  6.   end


这很明白了,characters_for_savefile 就是角色的图像讯息,也就行走图,它包含了 actor.character_name 和 actor.character_index,也就是行走图的档名和行走图中第几个图的索引,
playtime_s 就是游戏时间,这两个,也就是存档 2 的行走图和存档时间。

所以楼主要加上角色1的名字,很简单嘛!就是在这 def self.make_save_header 中把角色1 名字加进去,像这样:

RUBY 代码复制
  1. def self.make_save_header
  2.     header = {}
  3. header[:actor_1] = $game_actors[1].name
  4.     header[:characters] = $game_party.characters_for_savefile
  5.     header[:playtime_s] = $game_system.playtime_s
  6.     header
  7.   end


建立一个名为 :actor_1 的 header 变量,并且把 $game_actors[1].name 第一个角色的名字存放到这变量中,在存档时,档头就有第一个角色的名字了。

当然,这样只是存档而已,要怎么读档呢?那就是 Widnow_SaveFile 的工作,看这脚本名称您可能误会它是存档的脚本,其实不是,看看它最顶端的注解,

存档画面和读档画面中显示存档档案的视窗。

显示存档档案的视窗,意思就是存档和读档时的画面,就是上面那张存档 2 的那个画面,这脚本就是做这个事的,不要被脚本名骗了,

仔细看看 def refresh 的内容:

RUBY 代码复制
  1. def refresh
  2.     contents.clear #清空画面
  3.     change_color(normal_color) #改变颜色设定为正常色
  4.     name = Vocab::File + " #{@file_index + 1}" #name 名称格式为 存档n 也就是 存档1 存档2 ....
  5.     draw_text(4, 0, 200, line_height, name) #描绘 name
  6.     @name_width = text_size(name).width #取得 name 名称宽度
  7.     draw_party_characters(152, 58) #描绘角色行走图
  8.     draw_playtime(0, contents.height - line_height, contents.width - 4, 2) #描绘存档游戏时间
  9.   end


我想,看到这您也许就明白了,这一段就是在显示存档读档的画面,那个存档2,行走图和游戏时间,就是在这个地方描绘的,所以,要加上角色一的名称,就是找个地方自己加上去,

譬如:

RUBY 代码复制
  1. def refresh
  2.     contents.clear
  3.     change_color(normal_color)
  4.     name = Vocab::File + " #{@file_index + 1}"
  5.     draw_text(4, 0, 200, line_height, name)
  6.     @name_width = text_size(name).width
  7.     draw_party_characters(152, 58)
  8.     draw_playtime(0, contents.height - line_height, contents.width - 4, 2)
  9.  
  10.     header = DataManager.load_header(@file_index) #取得档头资料
  11.     return unless header #如果没有 header 档头资料就 return 结束这个 def
  12.     draw_text(100, 0, 200, line_height, header[:actor_1]) #在 100,0 的位置显示角色一的名字
  13.  
  14.   end


要注意的是档头资料一定要读取的动作,然后才能去描绘角色一的名字。

您看,不难吧?当您明白 VA 的存档读档,其实很容易改的,不像 XP 或 VX,需要做一些其它的补充,VA 的存读档就这么单纯直接。

之前有帖子问怎么把存档读档的行走图改成脸图,现在您想到没有?就是在 def self.make_save_header 那边加上战斗者的脸图档名和索引,

然后在 Window_SaveFile 这边的 def refresh 中,改掉 draw_party_characters(152, 58) 这个画行走图的方法,换成画脸图的就行了,

其实没有什么技巧的,很容易的,可是一般你不会知道,因为你没有注意 VA 的存档读档脚本内容,你就会以为很难,事实并不是。










评分

参与人数 1梦石 +1 收起 理由
Sion + 1 认可答案

查看全部评分

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
381 小时
注册时间
2012-8-13
帖子
113
3
 楼主| 发表于 2013-6-21 11:54:16 | 只看该作者
j433463 发表于 2013-6-21 05:12
其实存档没有想像中难,在 DataManager 脚本中,有一个生成存档的头数据 def self.make_save_header 专门用 ...

非常感谢,自己昨天也看了一下存档header的部分,但是就是不知道该怎么去读取1号角色的名字。。。现在总算弄好了:

点评

多谢,分辨率是1024x576,按16:9比例调的(我是宽屏控)  发表于 2013-6-22 09:58
很赞的画面,分辨率也特别,是宽屏的版本?  发表于 2013-6-22 00:54
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-27 14:06

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表