| 赞 | 0 |
| VIP | |
| 好人卡 | |
| 积分 | 1 |
| 经验 | |
| 最后登录 | 2013-6-25 |
| 在线时间 | 687 小时 |
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 687 小时
- 注册时间
- 2012-10-29
- 回帖
- 1526
|
发表于 2012-12-15 01:00:21
|
显示全部楼层
本帖最后由 j433463 于 2012-12-24 02:09 编辑
看看是否起始同伴队伍中没有角色?
脚本中的 main_commands_enabled 是用判断 Game_Party 中队伍人数是否为空值来决定为是,
如果你有存档,但是测试的时候画面中玩家角色一个都没有,得到的结果就是否了,选项就暗的不能选。
这种方式对读档判断并不能真的作是否有存档的判断,如果是想要改正的话,应该改成
[pre lang="ruby" line="1"] add_command("读档", :Load, load_enabled)
[/pre]
并且加上一段:
[pre lang="ruby" line="1"]
def load_enabled
for i in 0..3
@file_name = sprintf("Save%02d.rvdata2", i+1)
if FileTest.exist?(@file_name)
return true
end
end
return false
end
[/pre]
这一段就是判断是否有生成了某个存档,如果有,读档选项就会变亮可选了。
至于调整选项位置,那个只有直接去改 Window_MenuCommand 了,
选项没有使用 x,y 座标,而是按照顺序生成,插入 Main 脚本中没有办法调。
以修改默认脚本加上读档选项的方法我也说一下好了。
首先,在 Window_MenuCommand 默认脚本中,找到:
[pre lang="ruby" line="1"] #--------------------------------------------------------------------------
# ● 生成指令清单
#--------------------------------------------------------------------------
def make_command_list
add_main_commands
add_formation_command
add_original_commands
add_save_command
add_game_end_command
end
[/pre]
这是菜单选项的生成指令,分别是基本主项目,物品,技能,装备,状态四项,属于 add_main_commands
后面的几个依序是 整队(排队伍),外加选项,存档,结束游戏。
外加选项就是给另外新增选项用的,但它增加的选项会在存档前面,因为本来顺序就在前面,
如果是要在存档前加上读档选项,不必管下面这一行,如果读档选项要放在存档后,就在 add_save_command 加下面这一行:
[pre lang="ruby" line="1"] add_load_commands[/pre]
这样出来的读档选项就在存档后面,依此类推,要放在整队前面,就把一行加在 add_main_commands 下面。
然后,因为我是放在存档选项后面,所以,再找:
[pre lang="ruby" line="1"] #--------------------------------------------------------------------------
# ● 加入存档指令
#--------------------------------------------------------------------------
def add_save_command
add_command(Vocab::save, :save, save_enabled)
end
[/pre]
在它的底下再加一段:
[pre lang="ruby" line="1"] #--------------------------------------------------------------------------
# ● 加入读档指令
#--------------------------------------------------------------------------
def add_load_commands
add_command("读档", :load, load_enabled)
end
[/pre]
这一段是跟前面生成读档指定加上的那一行 add_load_commands 相对应的,看到 def 后面名称完全一样,
也就是定义 add_load_commands 指令的实际内容,判断档案是否存在,决定显示的读档选项可不可选。
还没完,再找:
[pre lang="ruby" line="1"] #--------------------------------------------------------------------------
# ● 取得存档的有效状态
#--------------------------------------------------------------------------
def save_enabled
!$game_system.save_disabled
end[/pre]
下面加上一段:
[pre lang="ruby" line="1"] #--------------------------------------------------------------------------
# ● 取得读档的有效状态
#--------------------------------------------------------------------------
def load_enabled
for i in 0..3
@file_name = sprintf("Save%02d.rvdata2", i+1)
return true if FileTest.exist?(@file_name)
end
return false
end
[/pre]
这一段,就是上一段中 load_enabled 的定义内容,用来判断有没有存档的自定义函数。
要注意的是如果用了扩展存档数的脚本,可以存档数目大于四个,要改 0..3 中的 3,
譬如可以存五十个存档,3 就要改成 49,因为是从 0 起算,所以是 49.
好,到这儿,菜单上选项已经做好了,但是,运行后点选不会起作用,因为没有定义点选后的动作,
那个是 Scene_Menu 默认脚本在做的事,所以要开始改 Scene_Menu 了。
先找:
[pre lang="ruby" line="1"] #--------------------------------------------------------------------------
# ● 生成指令视窗
#--------------------------------------------------------------------------
def create_command_window
@command_window = Window_MenuCommand.new
@command_window.set_handler(:item, method(:command_item))
@command_window.set_handler(:skill, method(:command_personal))
@command_window.set_handler(:equip, method(:command_personal))
@command_window.set_handler(:status, method(:command_personal))
@command_window.set_handler(:formation, method(:command_formation))
@command_window.set_handler(:save, method(:command_save))
@command_window.set_handler(:game_end, method(:command_game_end))
@command_window.set_handler(:cancel, method(:return_scene))
end
[/pre]
这儿,看到其中有个 :save 吧?那一行就是存档的,其实从上到下,顺序就是
物品,技能,装备,状态,整队,存档,游戏结束,最后的 cencel 是按 Esc 跳出菜单回到地图画面的。
在 :save 那一行下面,加上一行:
[pre lang="ruby" line="1"]@command_window.set_handler(:load, method(:command_load))[/pre]
也就是读档的项目,这一行后面,指定了读档要用到的函数模块名称 :command_load
所以,还得去给加个这个模块内容,所以,再找:
[pre lang="ruby" line="1"] #--------------------------------------------------------------------------
# ● 指令“存档”
#--------------------------------------------------------------------------
def command_save
SceneManager.call(Scene_Save)
end
[/pre]
在这下面加一段:
[pre lang="ruby" line="1"] #--------------------------------------------------------------------------
# ● 指令“读档”
#--------------------------------------------------------------------------
def command_load
SceneManager.call(Scene_Load)
end
[/pre]
这一段模块的用途就是呼叫读档菜单出来。
好啦,到这儿,读档菜单出来了,修改就到此完成了。
其实, def 自定义的函数模块不一定要在存档后面,位置可以自选的,这儿是为以后修改阅读方便,
所以都按照指定的顺序,放在存档后面,以后要找也方便点。
修改默认脚本是对新手不建议的方式,除非必要最好别去改默认脚本,不是因为改了出错会怎样救不回来,
如果脚本只改这一次,出错了可以删掉它,新建一个工程,复制新工程中的同一脚本过来就没事,
但如果脚本改了不只一次,有其它的用途,你后面错了一次,没办法修正补救了,怎么办?
那时候新建工程复制的方式不能用,除非你有在改错前预留一份备份,要不然整个工程就因此完蛋了。
所以,我建议,要改默认脚本,最好先备份脚本,这样防止改错后无法补救,
也可以复制整个工程当备份,这样改错了还有备份的可以补救。
|
|