Project1

标题: 关于标题界面添加了新选项后想跳转到新地图要怎么做? [打印本页]

作者: 孤客    时间: 2012-12-11 22:06
标题: 关于标题界面添加了新选项后想跳转到新地图要怎么做?
本帖最后由 孤客 于 2012-12-18 21:52 编辑

是这样的。。我添加了新的选项比如说是“游戏说明”,想让这个选项跳转的地方是我在游戏里面做的一张地图上的某个位置,但不知道要该怎么做,请问要怎么做?

还有,我看到一些游戏里面,在一周目的时候只有3个选项,玩了一圈(玩出结局后)到标题界面时候能看到新选项,这个要怎么做的?还有一些是标题界面有“第一篇”“第二篇”……“第N篇”,开始玩的时候只有第一篇选项可以进入,其他选项是灰色,而玩通关了第一篇后回到标题界面,第二篇的选项解封可以进入了(三和其他都没有解封),这种的要怎么做?

如果嫌麻烦可以帮我解答第一个问题就好= =,就是游戏说明那里怎么跳转到我要的地图上。。
作者: 喵呜喵5    时间: 2012-12-11 22:48
跳过标题画面脚本 用事件做标题,详情请翻VA图书馆。后面的要实现的话个人是用全局变量脚本来做的,不知道还有没有其他办法……
作者: j433463    时间: 2012-12-11 23:42
XP 都可以做到,vxa 没有道理要跳过标题页去做事件,
其它都好说,一样的方式,只是我目前还弄不清楚场所移动的写法,
最后按下选项后要切换到指定地图那个总是有 error。

    $game_player.reserve_transfer("2", 12, 23, d = 2)

之后怎么写?SceneManager.goto(Scene_Map)好像不行。

作者: 后知后觉    时间: 2012-12-12 20:15
本帖最后由 后知后觉 于 2012-12-12 20:20 编辑

要进入地图.那就得创建各种游戏数据才行
于是 Scene_Title 标题画面里的 开始游戏 执行的内容是最好的参考材料
在里面找到了这个

  1.   #--------------------------------------------------------------------------
  2.   # ● 指令“开始游戏”
  3.   #--------------------------------------------------------------------------
  4.   def command_new_game
  5.     DataManager.setup_new_game
  6.     close_command_window
  7.     fadeout_all
  8.     $game_map.autoplay
  9.     SceneManager.goto(Scene_Map)
  10.   end
复制代码
但是好像并没有看到设置初期地图id x y 的句子
但是却有一个  DataManager.setup_new_game
于是去 DataManager 脚本里找这个 setup_new_game 的定义内容

  1.   #--------------------------------------------------------------------------
  2.   # ● 设置新游戏
  3.   #--------------------------------------------------------------------------
  4.   def self.setup_new_game
  5.     create_game_objects
  6.     $game_party.setup_starting_members
  7.     $game_map.setup($data_system.start_map_id)
  8.     $game_player.moveto($data_system.start_x, $data_system.start_y)
  9.     $game_player.refresh
  10.     Graphics.frame_count = 0
  11.   end
复制代码
于是就看到了想要的全部东西....这个就叫 顺藤摸瓜 = =b

至于二周目什么的 在一周目完结的时候将一个标志写入一个文件.
然后在标题画面读取这个文件.判断那个标志是否存在.然后条件分歧做该做的事
作者: j433463    时间: 2012-12-13 00:37
本帖最后由 j433463 于 2012-12-13 00:40 编辑
后知后觉 发表于 2012-12-12 20:15
要进入地图.那就得创建各种游戏数据才行
于是 Scene_Title 标题画面里的 开始游戏 执行的内容是最好的参考 ...


原来如此,照解说写的改脚本,确实转移了:

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 指令“前往地图2”
  3.   #--------------------------------------------------------------------------
  4.   def command_gotomap2
  5.     DataManager.create_game_objects #创建游戏数据
  6.     $game_party.setup_starting_members #設定初期隊伍
  7.     $game_map.setup(2) # 地图 id 指定, 2 即 MAP002
  8.     $game_player.moveto(12, 23) # 玩家指定的位置, x, y
  9.     $game_player.refresh # 玩家人物重整
  10.     Graphics.frame_count = 0 #画面刷新计数   
  11.     close_command_window #关闭窗口
  12.     fadeout_all #关闭音效音乐
  13.     $game_map.autoplay #自动播放音乐音效
  14.     SceneManager.goto(Scene_Map) #无过渡切换场景
  15.   end


ps: 當中的註解是學習修改中給我自己看的,請無視之自行刪掉吧。
作者: j433463    时间: 2012-12-13 01:02
依照前面的改法,我说说自己修改步骤。

标题菜单中加上游戏说明选项方法是打开 Window_TitleCommand 脚本,
在:

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 生成指令清单
  3.   #--------------------------------------------------------------------------
  4.   def make_command_list
  5.     add_command(Vocab::new_game, :new_game)
  6.     add_command(Vocab::continue, :continue, continue_enabled)
  7.     add_command(Vocab::shutdown, :shutdown)
  8.   end


加上一行:

RUBY 代码复制
  1. add_command("游戏说明", :game_description)



其中 :game_description 是自己取的名称,可以改的。

然后在 Scene_Title 中的:

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 生成指令视窗
  3.   #--------------------------------------------------------------------------
  4.   def create_command_window
  5.     @command_window = Window_TitleCommand.new
  6.     @command_window.set_handler(:new_game, method(:command_new_game))
  7.     @command_window.set_handler(:continue, method(:command_continue))
  8.     @command_window.set_handler(:shutdown, method(:command_shutdown))   
  9.     @command_window.opacity = 255
  10.   end


加上一行:

RUBY 代码复制
  1. @command_window.set_handler(:game_description , method(:command_gamedescription))


这儿的 :game_description 是对应在 Window_TitleCommand 那给的名称,后面 :command_gamedescription 则是与后面要做的事有关。

在 Scene_Title 找个位置,加上这一段:

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 指令“游戏说明”
  3.   #--------------------------------------------------------------------------
  4.   def command_gamedescription
  5.     DataManager.create_game_objects #创建游戏数据
  6.     $game_party.setup_starting_members
  7.     $game_map.setup(2) # 地图 id 指定, 2 即 MAP002
  8.     $game_player.moveto(12, 23) # 玩家指定的位置, x, y
  9.     $game_player.refresh # 玩家人物重整
  10.     Graphics.frame_count = 0 #画面刷新计数   
  11.     close_command_window #关闭窗口
  12.     fadeout_all #关闭音效音乐
  13.     $game_map.autoplay #自动播放音乐音效
  14.     SceneManager.goto(Scene_Map) #无过渡切换场景
  15.   end


就可以在选择后画面转跳至 MAP002 的 12,23 位置,想要不同的地图和位置可以自行改上面的值。

我记得好像在 XP 时地图 id 说是八进位,地图 id 超过 8 以上要转换计算,不知道 ace 是不是也一样,没试过。

作者: 熊猫抱树    时间: 2012-12-14 10:21
这一篇详细,感谢4楼和狮子同学,收藏了,回去好好研究




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1