Project1
标题:
R剧用的存档界面!感谢剑兰前..啊不.....
[打印本页]
作者:
冰舞蝶恋
时间:
2011-3-22 20:55
标题:
R剧用的存档界面!感谢剑兰前..啊不.....
上截图附件和脚本
不多说了,脚本里啰嗦的要死
QQ截图未命名.png
(176.96 KB, 下载次数: 31)
下载附件
保存到相册
2011-3-22 20:54 上传
#==============================================================================
# 〇 R剧用的存读档界面
# By.冰舞蝶恋
#------------------------------------------------------------------------------
# 用法就不必介绍了吧!坐标什么的都是自动居中(适应于任何分辨率)
# 文字可以自己改动,用更改指定角色名字的指令用来做出章节效果。
# 默认用队伍中的第一个角色的名字来作为章节。
# 主要因为考虑到R剧打开菜单的可能性很小……最好是不能打开菜单,用事件打开
# 存档界面,不然就穿帮了,哈哈………
# 啊呀,啰嗦了老半天了,最后感谢剑兰前..辈(啊,怎么又说漏嘴了!!会折寿的!)
#==============================================================================
#==============================================================================
# ■ Window_SaveFile
#------------------------------------------------------------------------------
# 显示存档以及读档画面、保存文件的窗口。
#==============================================================================
class Window_SaveFile
#--------------------------------------------------------------------------
# ● 定义实例变量
#--------------------------------------------------------------------------
attr_reader :filename # 文件名称
attr_reader :file_exist # 文件存在标志
attr_reader :time_stamp # 时间标记
attr_reader :selected # 选择状态
#--------------------------------------------------------------------------
# ● 初始化对像
# file_index : 存档文件的索引(0-3)
# filename : 文件名称
#--------------------------------------------------------------------------
def initialize(file_index, filename)
super((Graphics.width-230)/2, (Graphics.height-64*3)/2 + 28 + file_index % 3 * 64, 230, 64)#56,544, 90)
@file_index = file_index
@filename = filename
load_gamedata
refresh
@selected = false
end
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.size = 16
name = Vocab::File + " #{@file_index + 1}"
self.contents.draw_text(4, 0+8, 200, WLH, name)
@name_width = contents.text_size(name).width
if @file_exist
draw_party_characters(152, 58)
draw_playtime(0, 34, contents.width - 4, 2)
end
end
#--------------------------------------------------------------------------
# ● 载入部分游戏资料
# 默认情况下,开关和变数不会用到。(以备扩充情况下如:显示地名等时使用)
#--------------------------------------------------------------------------
def load_gamedata
@time_stamp = Time.at(0)
@file_exist = FileTest.exist?(@filename)
if @file_exist
file = File.open(@filename, "r")
@time_stamp = file.mtime
begin
@characters = Marshal.load(file)
@frame_count = Marshal.load(file)
@last_bgm = Marshal.load(file)
@last_bgs = Marshal.load(file)
@game_system = Marshal.load(file)
@game_message = Marshal.load(file)
@game_switches = Marshal.load(file)
@game_variables = Marshal.load(file)
@game_actors = Marshal.load(file)
@game_party = Marshal.load(file)
@game_player = Marshal.load(file)
@total_sec = @frame_count / Graphics.frame_rate
rescue
@file_exist = false
ensure
file.close
end
end
end
#--------------------------------------------------------------------------
# ● 描绘游戏时间
# x : 绘制点 X 座标
# y : 绘制点 Y 座标
# width : 描绘区域宽度
# align : 对齐方式
#--------------------------------------------------------------------------
def draw_playtime(x, y, width, align)
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
time_string = sprintf(" %02d时%02d分", hour, min, sec)#%02d:%02d:%02d
c = 544 - 230
self.contents.font.size = 16
self.contents.font.color = system_color
self.contents.draw_text(x-374+8+c, y-36-2, width, WLH, "游戏时间:",2)
self.contents.font.color = normal_color
self.contents.draw_text(x-320+8+c, y-36-2, width, WLH, time_string, 2)
self.contents.font.color = system_color
self.contents.draw_text(x-406+8+c, y-20-2, width, WLH, "章节:", 2)
end
#--------------------------------------------------------------------------
# ● 描绘队员
# x : 绘制点 X 座标
# y : 绘制点 Y 座标
#--------------------------------------------------------------------------
def draw_party_characters(x, y)
for i in
[email protected]
name = @characters[i][2]
self.contents.font.size = 16
self.contents.font.color = normal_color
self.contents.draw_text(x-56+8+ i * 544, y-44-2, 200, 24, name, 0)
end
end
#--------------------------------------------------------------------------
# ● 刷新光标
#--------------------------------------------------------------------------
def update_cursor
if @selected
self.cursor_rect.set(0, 0+7, @name_width + 8, WLH)
else
self.cursor_rect.empty
end
end
end
#==============================================================================
# ■ Scene_File
#------------------------------------------------------------------------------
# 存档画面及读档画面的类。
#==============================================================================
class Scene_File
#--------------------------------------------------------------------------
# ● 开始处理
#--------------------------------------------------------------------------
def start
super
create_menu_background
create_savefile_windows
@z_window = Window_Z.new(0, 0)
if @saving
@index = $game_temp.last_file_index
else
@index = self.latest_file_index
end
@savefile_windows[@index].selected = true
end
#--------------------------------------------------------------------------
# ● 结束处理
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@z_window.dispose
dispose_item_windows
end
#--------------------------------------------------------------------------
# ● 更新画面
#--------------------------------------------------------------------------
def update
super
update_menu_background
@z_window.update
update_savefile_windows
update_savefile_selection
end
#--------------------------------------------------------------------------
# ● 生成存档窗口
#--------------------------------------------------------------------------
def create_savefile_windows
@savefile_windows = []
for i in 0..2
@savefile_windows.push(Window_SaveFile.new(i, make_filename(i)))
end
@item_max = 3
end
#--------------------------------------------------------------------------
# ● 写入存档数据
# file : 写入存档对象(已开启)
#--------------------------------------------------------------------------
def write_save_data(file)
characters = []
for actor in $game_party.members
characters.push([actor.character_name, actor.character_index, actor.name])
end
$game_system.save_count += 1
$game_system.version_id = $data_system.version_id
@last_bgm = RPG::BGM::last
@last_bgs = RPG::BGS::last
Marshal.dump(characters, file)
Marshal.dump(Graphics.frame_count, file)
Marshal.dump(@last_bgm, file)
Marshal.dump(@last_bgs, file)
Marshal.dump($game_system, file)
Marshal.dump($game_message, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
end
end
#==============================================================================
# ■ Window_Z
#------------------------------------------------------------------------------
# 显示读档或是存档的文字。
#==============================================================================
class Window_Z < Window_Base
#--------------------------------------------------------------------------
# ● 初始化对像
# file_index : 存档文件的索引(0-3)
# filename : 文件名称
#--------------------------------------------------------------------------
def initialize(x,y)
super((Graphics.width-230)/2, (Graphics.height-56)/2-64*2+32, 230, 56)#544, 90)
refresh
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.bold = true
self.contents.draw_text(60, 2, 230, WLH, "存读记忆")
end
end
复制代码
R剧存档.rar
(244.15 KB, 下载次数: 774)
2011-3-22 20:55 上传
点击文件名下载附件
作者:
小冰
时间:
2011-3-22 21:00
顺便晒自己的一个可能是无底坑的R剧
作者:
一箭烂YiJL
时间:
2011-3-22 21:07
Window_Z的refresh很废..."存读记忆"在initialize里写一次就好了,不要update。(耗时)
怎么这么喜欢叫人前辈呢?(哎~{:nm_9:})
竟然真的完全像我的解答一样,储存了角色名字!不是章节?
作者:
冰舞蝶恋
时间:
2011-3-22 21:12
回复
一箭烂YiJL
的帖子
+-+咱是脚本盲,脚本盲
前..啊不...咱完全不懂脚本
作者:
素材发布
时间:
2011-8-26 14:45
是不是只可以存3个记录呢
作者:
黄亦天
时间:
2011-8-26 20:52
本帖最后由 黄亦天 于 2011-8-26 20:53 编辑
刚回来就看到这么好的东西~
正好准备做个简单一点的养成游戏什么的……
拿去学习
(温习脚本+修改)
去了~
放了一个月自己写的东西完全看不懂了肿么办 囧
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1