查看: 2356|回复: 13

[已经解决] 有没有什么命令会让地图重启。

[复制链接]
梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

发表于 2017-7-23 18:27:05 | 显示全部楼层 |阅读模式

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

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

×
我玩着玩着。就突然地图一闪,感觉重新启动了。
所有后来玩的途中添加的事件都卡住不动了
然后我大概执行了
if $scene.is_a?(Scene_Map)
      unless $scene.spriteset == nil
      $scene.spriteset.dispose
      $scene.spriteset = Spriteset_Map.new
    end
    $scene.hud_update
    $scene.jnsc_sx
    end
所有玩的途中添加的事件都消失了。

问题是我不知道该从哪找问题。
是不是有什么命令是让地图重新启动的,然后把那些事件都消没了。
我是不是可以搜索这个
召唤事件的脚本  def self.mts(map_id,event_id,item_x,item_y,npc=nil,duiyou=nil,di2=nil,id=nil,save=false)
      return unless self.is_map?        
      map = load_data(sprintf("Data/Map%03d.rxdata", map_id))     
      temp = Marshal.load(Marshal.dump(map))      
      if !$game_system.map_events_number
         $game_system.map_events_number = {}
      end  
      sum = $game_system.map_events_number      
      m_id = $game_map.map_id      
      sum[m_id] == nil ? sum[m_id] = 2000 : sum[m_id] += 1
      new_event_id = sum[m_id]     
      new_event_id = id if id != nil
      $game_variables[36][new_event_id] = npc  if npc != nil
      $game_variables[35][new_event_id] = duiyou if duiyou != nil
      $game_variables[34][new_event_id] = di2 if di2 != nil
      temp.events[event_id].id = new_event_id      
      temp.events[event_id].x,temp.events[event_id].y = item_x,item_y      
      $game_map.events[new_event_id] = Game_Event.new(m_id,temp.events[event_id])
      $game_variables[121] = temp.events[event_id].id
      refresh_map   
  end
梦石
0
星屑
8026
在线时间
1051 小时
注册时间
2012-4-3
回帖
1270

开拓者

发表于 2017-7-23 23:26:46 来自手机 | 显示全部楼层
楼主大可试一试把下面脚本的2000设置为一个无限大的数值,比如两千万。看看会有什么改进,如果不是大概就不是这问题,究竟如何等楼主实测过后再说。

点评

也好~  发表于 2017-7-25 00:32
我现在是判断事件ID是否已存在,已存在就+1.所以不会有重复ID的情况。由于改了这个ID,所以和这个ID有关的地方也都换过来了。  发表于 2017-7-25 00:03
纠错字:把数值设置为无限大也只是一个拖延的方法。(这里指的是2000这个数值的大小)  发表于 2017-7-24 23:43
看看对于出错发生的时间是不是延长一倍、两倍。这个问题也许还没有完全解决。嗯嗯,还是要等楼主再次实测过后再说吧。  发表于 2017-7-24 23:39
如果是与‘‘2000’’的数值有关,问题的根源是一个我称之为‘’id重合‘’的问题。把数组设置为无限大也只是一个拖延的方法,楼主若有时间,尝试对2000的倍数测一遍,比如4000、8000,看看对于出错发生的时间是不是   发表于 2017-7-24 23:34
回复

使用道具 举报

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
回帖
3011
发表于 2017-7-24 01:32:12 | 显示全部楼层
没完整的脚本没法鉴定问题啊
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到engshun@1ppl.me咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
回复

使用道具 举报

梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

 楼主| 发表于 2017-7-24 02:32:47 | 显示全部楼层
Im剑侠客 发表于 2017-7-23 23:26
楼主大可试一试把下面脚本的2000设置为一个无限大的数值,比如两千万。看看会有什么改进,如果不是大概就不 ...

还有一点比较重要的信息就是。本来某个窗口只在某些地图里才会有。但是当时那个窗口一闪而过了。
   if Beidongjineng::Btianqiddt.include?($game_map.map_id)
    @duihua_window = Window_Duihua.new
但是Beidongjineng::Btianqiddt这个数组里不包括当前出错地图

点评

这个一闪而过的窗口会不会是没有及时释放啊?这个窗口与地图的提取(taken)事件有没有直接的关联?如果窗口独立、事件也独立,我猜,这二者应该扯不上关系。   发表于 2017-7-24 12:16
回复

使用道具 举报

梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

发表于 2017-7-24 09:32:10 | 显示全部楼层
要说重启,应该是 $game_map.setup(map_id) 吧
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部