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

Project1

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

[已经解决] 如何在菜单中设置读档功能

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
59 小时
注册时间
2012-11-17
帖子
23
跳转到指定楼层
1
发表于 2012-12-9 18:51:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 八神和麻 于 2012-12-9 22:31 编辑

综上所述,就是按X调出菜单后,如何在功能中加入“读档”功能呢?

Lv3.寻梦者

死亡颂唱者

梦石
0
星屑
1154
在线时间
1794 小时
注册时间
2011-10-21
帖子
2245

开拓者

2
发表于 2012-12-9 19:45:59 | 只看该作者
RUBY 代码复制
  1. #原作者:吾不知
  2. #使用方法:插在Main以上即可
  3.  
  4. class Window_MenuCommand < Window_Command  
  5.   alias load_add_main_commands add_main_commands
  6.   def add_main_commands
  7.       load_add_main_commands
  8.       add_command("读档", :Load, main_commands_enabled)
  9.   end
  10. end   
  11. class Scene_Menu < Scene_MenuBase
  12.    alias load_create_command_window create_command_window
  13.    def create_command_window
  14.        load_create_command_window  
  15.        @command_window.set_handler(:Load,     method(:Load))
  16.    end
  17.    def Load
  18.        SceneManager.call(Scene_Load)
  19.    end
  20. end

相当简单的,自己也可以尝试调一下

点评

感谢www  发表于 2012-12-9 22:30
这家伙很懒,什么也没有留下
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
150
在线时间
1 小时
注册时间
2012-12-13
帖子
2
3
发表于 2012-12-14 17:17:23 | 只看该作者
acn00269 发表于 2012-12-9 19:45
#原作者:吾不知
#使用方法:插在Main以上即可

问一下,我小白,具体查到那个main前面? 我试验了半天了,不是游戏报错,要不就是菜单报错,要不就是一点关系都没有。谢谢了

点评

脚本编辑器里 最下面不是有一个Main么 插到他前面就行了 新建一个脚本栏 复制粘帖进去 还不会就去看教程吧  发表于 2012-12-14 17:37
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
150
在线时间
1 小时
注册时间
2012-12-13
帖子
2
4
发表于 2012-12-14 17:45:37 | 只看该作者
acn00269 发表于 2012-12-9 19:45
#原作者:吾不知
#使用方法:插在Main以上即可

我插入了,出现读档的选项了,不过一直是黑的,无法选,但我是有存档的,问一下这是什么原因?(ps:顺便再跟问个,那条语句是控制读档选项位置的?)

点评

你问的这些我都不清楚。。我也是最近才开始学脚本的 不过你选项不可用的情况可能是存档失效吧  发表于 2012-12-14 17:53
回复 支持 反对

使用道具 举报

Lv1.梦旅人

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

看看是否起始同伴队伍中没有角色?

脚本中的 main_commands_enabled 是用判断 Game_Party 中队伍人数是否为空值来决定为是,
如果你有存档,但是测试的时候画面中玩家角色一个都没有,得到的结果就是否了,选项就暗的不能选。

这种方式对读档判断并不能真的作是否有存档的判断,如果是想要改正的话,应该改成


RUBY 代码复制
  1. add_command("读档", :Load, load_enabled)


并且加上一段:

RUBY 代码复制
  1. def load_enabled
  2.     for i in 0..3
  3.       @file_name = sprintf("Save%02d.rvdata2", i+1)
  4.       if FileTest.exist?(@file_name)
  5.         return true
  6.       end
  7.     end
  8.     return false
  9.   end


这一段就是判断是否有生成了某个存档,如果有,读档选项就会变亮可选了。

至于调整选项位置,那个只有直接去改 Window_MenuCommand 了,
选项没有使用 x,y 座标,而是按照顺序生成,插入 Main 脚本中没有办法调。

以修改默认脚本加上读档选项的方法我也说一下好了。

首先,在 Window_MenuCommand 默认脚本中,找到:

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 生成指令清单
  3.   #--------------------------------------------------------------------------
  4.   def make_command_list
  5.     add_main_commands
  6.     add_formation_command
  7.     add_original_commands
  8.     add_save_command
  9.     add_game_end_command
  10.   end


这是菜单选项的生成指令,分别是基本主项目,物品,技能,装备,状态四项,属于 add_main_commands
后面的几个依序是 整队(排队伍),外加选项,存档,结束游戏。

外加选项就是给另外新增选项用的,但它增加的选项会在存档前面,因为本来顺序就在前面,
如果是要在存档前加上读档选项,不必管下面这一行,如果读档选项要放在存档后,就在 add_save_command 加下面这一行:

RUBY 代码复制
  1. add_load_commands


这样出来的读档选项就在存档后面,依此类推,要放在整队前面,就把一行加在 add_main_commands 下面。

然后,因为我是放在存档选项后面,所以,再找:

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 加入存档指令
  3.   #--------------------------------------------------------------------------
  4.   def add_save_command
  5.     add_command(Vocab::save, :save, save_enabled)
  6.   end


在它的底下再加一段:

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 加入读档指令
  3.   #--------------------------------------------------------------------------
  4.   def add_load_commands
  5.       add_command("读档", :load, load_enabled)
  6.   end


这一段是跟前面生成读档指定加上的那一行 add_load_commands 相对应的,看到 def 后面名称完全一样,
也就是定义 add_load_commands 指令的实际内容,判断档案是否存在,决定显示的读档选项可不可选。

还没完,再找:

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 取得存档的有效状态
  3.   #--------------------------------------------------------------------------
  4.   def save_enabled
  5.     !$game_system.save_disabled
  6.   end


下面加上一段:

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 取得读档的有效状态
  3.   #--------------------------------------------------------------------------
  4.   def load_enabled
  5.     for i in 0..3
  6.       @file_name = sprintf("Save%02d.rvdata2", i+1)
  7.       return true if FileTest.exist?(@file_name)
  8.     end
  9.     return false
  10.   end


这一段,就是上一段中 load_enabled 的定义内容,用来判断有没有存档的自定义函数。

要注意的是如果用了扩展存档数的脚本,可以存档数目大于四个,要改 0..3 中的 3,
譬如可以存五十个存档,3 就要改成 49,因为是从 0 起算,所以是 49.

好,到这儿,菜单上选项已经做好了,但是,运行后点选不会起作用,因为没有定义点选后的动作,
那个是 Scene_Menu 默认脚本在做的事,所以要开始改 Scene_Menu 了。

先找:

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 生成指令视窗
  3.   #--------------------------------------------------------------------------
  4.   def create_command_window
  5.     @command_window = Window_MenuCommand.new
  6.     @command_window.set_handler(:item,      method(:command_item))
  7.     @command_window.set_handler(:skill,     method(:command_personal))
  8.     @command_window.set_handler(:equip,     method(:command_personal))
  9.     @command_window.set_handler(:status,    method(:command_personal))
  10.     @command_window.set_handler(:formation, method(:command_formation))
  11.     @command_window.set_handler(:save,      method(:command_save))
  12.     @command_window.set_handler(:game_end,  method(:command_game_end))
  13.     @command_window.set_handler(:cancel,    method(:return_scene))
  14.   end


这儿,看到其中有个 :save 吧?那一行就是存档的,其实从上到下,顺序就是
物品,技能,装备,状态,整队,存档,游戏结束,最后的 cencel 是按 Esc 跳出菜单回到地图画面的。

在 :save 那一行下面,加上一行:

RUBY 代码复制
  1. @command_window.set_handler(:load,     method(:command_load))


也就是读档的项目,这一行后面,指定了读档要用到的函数模块名称 :command_load
所以,还得去给加个这个模块内容,所以,再找:

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 指令“存档”
  3.   #--------------------------------------------------------------------------
  4.   def command_save
  5.     SceneManager.call(Scene_Save)
  6.   end


在这下面加一段:

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 指令“读档”
  3.   #--------------------------------------------------------------------------
  4.    def command_load
  5.        SceneManager.call(Scene_Load)
  6.    end


这一段模块的用途就是呼叫读档菜单出来。

好啦,到这儿,读档菜单出来了,修改就到此完成了。

其实, def 自定义的函数模块不一定要在存档后面,位置可以自选的,这儿是为以后修改阅读方便,
所以都按照指定的顺序,放在存档后面,以后要找也方便点。

修改默认脚本是对新手不建议的方式,除非必要最好别去改默认脚本,不是因为改了出错会怎样救不回来,
如果脚本只改这一次,出错了可以删掉它,新建一个工程,复制新工程中的同一脚本过来就没事,
但如果脚本改了不只一次,有其它的用途,你后面错了一次,没办法修正补救了,怎么办?
那时候新建工程复制的方式不能用,除非你有在改错前预留一份备份,要不然整个工程就因此完蛋了。

所以,我建议,要改默认脚本,最好先备份脚本,这样防止改错后无法补救,
也可以复制整个工程当备份,这样改错了还有备份的可以补救。





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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-10 16:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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