Project1

标题: 请教一个宝箱的问题 [打印本页]

作者: 幻耶    时间: 2008-4-24 17:24
标题: 请教一个宝箱的问题
平时打开宝箱可以随机得到宝物,取走后箱子为空,当下次读取存档进入游戏之后箱子又关闭,又可以随机得到宝物,这个怎么实现? [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 9244579    时间: 2008-4-24 18:47
汗``这不是BUG吗```哈哈```
作者: 幻耶    时间: 2008-4-24 18:53
那我就要实现这个BUG!
作者: 9244579    时间: 2008-4-24 19:13
那,切换场景后回来,需要改吗?
作者: 幻耶    时间: 2008-4-24 20:35
切换场景后回来不需要改,只有退出后再进入游戏,箱子才又有东西了
作者: 精灵使者    时间: 2008-4-24 20:51
问题来了:
那个宝箱怎么知道游戏退出呢?

作者: hitlerson    时间: 2008-4-24 20:52
看来要在读档后面加一句,让控制宝箱已经开启的开关关闭
作者: 精灵使者    时间: 2008-4-24 21:01
嗯嗯
应该是改写这个地方吧。
例如以前使用独立开关的宝箱,现在用公共开关控制,例如1号开关控制。
然后在这里加一句:
Scene_Load 83行左右
    $game_party         = Marshal.load(file)
    $game_troop         = Marshal.load(file)
    $game_map           = Marshal.load(file)
    $game_player        = Marshal.load(file)
###############################################
    $game_switches[1] = false #关闭1号开关
###############################################
    # 魔法编号与保存时有差异的情况下
    # (加入编辑器的编辑过的数据)
    if $game_system.magic_number != $data_system.magic_number
      # 重新装载地图
      $game_map.setup($game_map.map_id)
      $game_player.center($game_player.x, $game_player.y)
    end
    # 刷新同伴成员
    $game_party.refresh
  end

如果想打开/关闭其他的开关的话,也可以添加并修改这个地方。

作者: 幻耶    时间: 2008-4-24 22:41
Scene_Load里添加了  $game_switches[1] = false

当控制宝箱的1号开关打开后,存档再读档的时候,这个开关关不掉了
作者: 一瞬间的幻觉    时间: 2008-4-25 01:11
高手。。。这招好,不过用在宝箱上面好像没有什么用。。
如果想宝箱的东西拿不完。。游戏就没有意义了。。。

我做过一个半完成的游戏中倒是有个类似的设定
就是设定时间和步数,比如说一个草药,如果采集了
过了游戏时间100就会再次长出来,亦或过了步数500再
长出来。
作者: 精灵使者    时间: 2008-4-25 02:27
我则是通过一个延迟然后再关闭比较好一点。
作者: killuer    时间: 2008-4-25 08:24
那怎样才能设置延迟呢?
作者: 天圣的马甲    时间: 2008-4-25 16:51
这是一个很诡异的问题啊……{/lh}
在Scene_Load里面关闭开关并且加上了update刷新地图,再回到地图的时候用F9可以看到那个开关被关上了,但是宝箱的事件已久留在打开开关的状态,太诡异了……
但是用Debug模式开开那个开关再关上的时候,切换回地图画面宝箱就合上了。可能是Map那里的刷新出了问题……?嗯,两个月没碰RM,我得好好补课了囧n……
作者: 精灵使者    时间: 2008-4-25 17:01
以下引用killuer于2008-4-25 0:24:38的发言:

那怎样才能设置延迟呢?

延迟啊。
箱子打开以后不是打开一个开关么?这个开关控制一个并行操作的公共事件,里面写等待相应帧以后关闭这个开关就可以啦。
作者: 幻耶    时间: 2008-4-25 17:06
我把关闭开关加在刷新地图前面也没效果..怎么用Debug模式开那个开关?
作者: 精灵使者    时间: 2008-4-25 17:18
刚才我开工程测试了。
似乎那个开关关上了是真的,如果第一次开启游戏读取存档是关上了,但是返回开始画面以后的存档似乎没有刷新屏幕- -箱子依然是开着,但是查了debug箱子又合上了。
如果把这个关闭开关加到存档的位置的话,很容易出现存一次档以后箱子就合上的情况。
作者: 幻耶    时间: 2008-4-25 17:37
确实不能放在存档脚本里的,如何刷新屏幕哦
作者: 幻耶    时间: 2008-4-25 17:47
读档的时候执行公共事件关闭开关?好像也没效果

    # 读取各种游戏对像
    $game_system        = Marshal.load(file)
    $game_switches      = Marshal.load(file)
    $game_variables     = Marshal.load(file)
    $game_self_switches = Marshal.load(file)
    $game_screen        = Marshal.load(file)
    $game_actors        = Marshal.load(file)
    $game_party         = Marshal.load(file)
    $game_troop         = Marshal.load(file)
    $game_map           = Marshal.load(file)
    $game_player        = Marshal.load(file)      
   
    common_event = $data_common_events[975]   #关闭开关公共事件
作者: 精灵使者    时间: 2008-4-25 18:20
以下引用幻耶于2008-4-25 9:47:21的发言:

读档的时候执行公共事件关闭开关?好像也没效果

   # 读取各种游戏对像
   $game_system        = Marshal.load(file)
   $game_switches      = Marshal.load(file)
   $game_variables     = Marshal.load(file)
   $game_self_switches = Marshal.load(file)
   $game_screen        = Marshal.load(file)
   $game_actors        = Marshal.load(file)
   $game_party         = Marshal.load(file)
   $game_troop         = Marshal.load(file)
   $game_map           = Marshal.load(file)
   $game_player        = Marshal.load(file)      
   
   common_event = $data_common_events[975]   #关闭开关公共事件

放置公共事件不能这样放置。我记得得使用另外一种方法。
作者: 幻耶    时间: 2008-4-25 21:32
那么,如何在读取游戏的时候调用公共事件呢?
作者: hitlerson    时间: 2008-4-25 22:23
不是说了吗,你把控制开关的那句加在存档的时候,这样就可以了,读档的时候是会有问题,就不要多追究了,实现效果就好了嘛~
作者: 幻耶    时间: 2008-4-25 22:25
那样的话只要一存档不退出游戏也可以反复开箱子了?我不是要那种效果啊,
作者: link006007    时间: 2008-4-26 04:22
以下引用精灵使者于2008-4-25 9:18:42的发言:
但是查了debug箱子又合上了。
[本贴由作者于 2008-4-25 9:22:12 最后编辑]

$game_map.refresh  刷新地图事件 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~




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