查看: 3457|回复: 6

[已经解决] 关于标题界面添加了新选项后想跳转到新地图要怎么做?

[复制链接]
梦石
0
星屑
50
在线时间
62 小时
注册时间
2012-10-25
回帖
40
发表于 2012-12-11 22:06:25 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 孤客 于 2012-12-18 21:52 编辑

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

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

如果嫌麻烦可以帮我解答第一个问题就好= =,就是游戏说明那里怎么跳转到我要的地图上。。
梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
回帖
1526
发表于 2012-12-13 01:02:41 | 显示全部楼层
依照前面的改法,我说说自己修改步骤。

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

[pre lang="ruby" line="1"]  #--------------------------------------------------------------------------
  # ● 生成指令清单
  #--------------------------------------------------------------------------
  def make_command_list
    add_command(Vocab::new_game, :new_game)
    add_command(Vocab::continue, :continue, continue_enabled)
    add_command(Vocab::shutdown, :shutdown)
  end
[/pre]

加上一行:

[pre lang="ruby" line="1"]    add_command("游戏说明", :game_description)   
[/pre]


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

然后在 Scene_Title 中的:

[pre lang="ruby" line="1"]  #--------------------------------------------------------------------------
  # ● 生成指令视窗
  #--------------------------------------------------------------------------
  def create_command_window
    @command_window = Window_TitleCommand.new
    @command_window.set_handler(:new_game, method(:command_new_game))
    @command_window.set_handler(:continue, method(:command_continue))
    @command_window.set_handler(:shutdown, method(:command_shutdown))   
    @command_window.opacity = 255
  end
[/pre]

加上一行:

[pre lang="ruby" line="1"]    @command_window.set_handler(:game_description , method(:command_gamedescription))
[/pre]

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

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

[pre lang="ruby" line="1"]  #--------------------------------------------------------------------------
  # ● 指令“游戏说明”
  #--------------------------------------------------------------------------
  def command_gamedescription
    DataManager.create_game_objects #创建游戏数据
    $game_party.setup_starting_members
    $game_map.setup(2) # 地图 id 指定, 2 即 MAP002
    $game_player.moveto(12, 23) # 玩家指定的位置, x, y
    $game_player.refresh # 玩家人物重整
    Graphics.frame_count = 0 #画面刷新计数   
    close_command_window #关闭窗口
    fadeout_all #关闭音效音乐
    $game_map.autoplay #自动播放音乐音效
    SceneManager.goto(Scene_Map) #无过渡切换场景
  end  
[/pre]

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

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

点评

感谢!!!!!刚回来就看到想要的了!!O(∩_∩)O~  发表于 2012-12-18 21:50
确实如此,建了地图至 MAP011,map_id 用 11 去测试正常转移,不是八进制,不需要换算很方便啊。  发表于 2012-12-13 05:35
应该不是八进制 - - 我也没试过..这一块也接触得少 不清楚  发表于 2012-12-13 02:13

评分

参与人数 1梦石 +1 收起 理由
Mic_洛洛 + 1 认可答案,附赠6R精美好人卡一张.

查看全部评分

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

使用道具 举报

梦石
1
星屑
23236
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2012-12-11 22:48:33 来自手机 | 显示全部楼层
跳过标题画面脚本 用事件做标题,详情请翻VA图书馆。后面的要实现的话个人是用全局变量脚本来做的,不知道还有没有其他办法……

点评

总觉得比较麻烦,但还是谢谢了。。  发表于 2012-12-12 19:59
回复

使用道具 举报

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
回帖
1526
发表于 2012-12-11 23:42:11 | 显示全部楼层
XP 都可以做到,vxa 没有道理要跳过标题页去做事件,
其它都好说,一样的方式,只是我目前还弄不清楚场所移动的写法,
最后按下选项后要切换到指定地图那个总是有 error。

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

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

点评

我也没弄明白。。你如果成功了告诉我一下吧~  发表于 2012-12-12 20:03
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复

使用道具 举报

梦石
0
星屑
7095
在线时间
1666 小时
注册时间
2008-10-29
回帖
6612

贵宾

发表于 2012-12-12 20:15:14 | 显示全部楼层
本帖最后由 后知后觉 于 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

至于二周目什么的 在一周目完结的时候将一个标志写入一个文件.
然后在标题画面读取这个文件.判断那个标志是否存在.然后条件分歧做该做的事

点评

感谢指点,茅塞顿开。  发表于 2012-12-13 01:04

评分

参与人数 1梦石 +1 收起 理由
Mic_洛洛 + 1 精品文章

查看全部评分












你知道得太多了

回复

使用道具 举报

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
回帖
1526
发表于 2012-12-13 00:37:57 | 显示全部楼层
本帖最后由 j433463 于 2012-12-13 00:40 编辑
后知后觉 发表于 2012-12-12 20:15
要进入地图.那就得创建各种游戏数据才行
于是 Scene_Title 标题画面里的 开始游戏 执行的内容是最好的参考 ...


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

[pre lang="ruby" line="1"]  #--------------------------------------------------------------------------
  # ● 指令“前往地图2”
  #--------------------------------------------------------------------------
  def command_gotomap2
    DataManager.create_game_objects #创建游戏数据
    $game_party.setup_starting_members #設定初期隊伍
    $game_map.setup(2) # 地图 id 指定, 2 即 MAP002
    $game_player.moveto(12, 23) # 玩家指定的位置, x, y
    $game_player.refresh # 玩家人物重整
    Graphics.frame_count = 0 #画面刷新计数   
    close_command_window #关闭窗口
    fadeout_all #关闭音效音乐
    $game_map.autoplay #自动播放音乐音效
    SceneManager.goto(Scene_Map) #无过渡切换场景
  end  
[/pre]

ps: 當中的註解是學習修改中給我自己看的,請無視之自行刪掉吧。
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复

使用道具 举报

梦石
0
星屑
48
在线时间
294 小时
注册时间
2012-12-1
回帖
890
发表于 2012-12-14 10:21:51 | 显示全部楼层
这一篇详细,感谢4楼和狮子同学,收藏了,回去好好研究
终于可以挂签名了
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部