楼主: 幻耶

[已经解决] 能否实现每次进游戏让改过的事件名的复原

  [复制链接]
梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
回帖
864
发表于 2009-11-7 15:19:28 | 显示全部楼层
本帖最后由 secondsen 于 2009-11-7 15:20 编辑

class Game_Map
  def reset
    @events.clear
    for i in @map.events.keys
      @events = Game_Event.new(@map_id, @map.events)
    end
  end
end

。。。。

还有  Scene_Load  83行
也就是
    $game_map           = Marshal.load(file)
    $game_player        = Marshal.load(file)
下面插入
    $game_map.reset
没做么。。就是按照以前的改。。。

另外为什么你也是 改EV001的名字变成111。。。难道咱们俩心有灵犀?
回复

使用道具 举报

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
回帖
864
发表于 2009-11-7 15:22:21 | 显示全部楼层
为什么你也是改EV001的名字变成111,难道咱俩心有灵犀?

Scene_Load 83行
就是
    $game_map           = Marshal.load(file)
    $game_player        = Marshal.load(file)
下面插入
    $game_map.reset

还有这脚本
  1. class Game_Map
  2.   def reset
  3.     @events.clear
  4.     for i in @map.events.keys
  5.       @events[i] = Game_Event.new(@map_id, @map.events[i])
  6.     end
  7.   end
  8. end
复制代码
就是和以前一样的改动
回复

使用道具 举报

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
回帖
914
 楼主| 发表于 2009-11-7 15:24:50 | 显示全部楼层
多谢!!能不能限定某些地图的某些事件还原啊?比如只让1~20号地图里面的1~20号事件的名字和位置还原
囡囚囨囚囨図囨囧
回复

使用道具 举报

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
回帖
864
发表于 2009-11-7 15:29:36 | 显示全部楼层
本帖最后由 secondsen 于 2009-11-7 15:32 编辑

1~20号
  1. class Game_Map
  2.   def reset
  3.     @events.clear
  4.     for i in @map.events.keys
  5.       @events[i] = Game_Event.new(@map_id, @map.events[i]) if i>0 && i < 21
  6.     end
  7.   end
  8. end
复制代码
if i>0 && i < 21就加了这个东西。。。

另外。。。name是载入的时候自动变回去的。。。。如要还原不了需要
save_data()把你的数据改掉。。。如果你的游戏要打包加密的话,我也不知道会出现什么情况。。
回复

使用道具 举报

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
回帖
914
 楼主| 发表于 2009-11-7 15:29:56 | 显示全部楼层
本帖最后由 幻耶 于 2009-11-7 15:31 编辑

下面两段放一起插在MAIN上面吗?还有在 Scene_Load  83行下面加了$game_map.reset

我保存之后再读取就出错了!缺省的工程啊~~没冲突的。。

class Game_Event < Game_Character
  attr_accessor :name
  alias old_refresh refresh
  def refresh
    @name = @event.name
    old_refresh
  end
end


  # 添加
    def reset
    @events.clear
    for i in @map.events.keys
      @events = Game_Event.new(@map_id, @map.events)
    end
  end
11.JPG
囡囚囨囚囨図囨囧
回复

使用道具 举报

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
回帖
864
发表于 2009-11-7 15:34:13 | 显示全部楼层
@events[i] = Game_Event.new(@map_id, @map.events[i]) if i>0 && i < 21


而不是

@events = Game_Event.new(@map_id, @map.events)
回复

使用道具 举报

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
回帖
864
发表于 2009-11-7 15:35:34 | 显示全部楼层
注意。。你少了 [i]
回复

使用道具 举报

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
回帖
914
 楼主| 发表于 2009-11-7 15:37:00 | 显示全部楼层
谢谢!我其实是把敌人的HP放到事件名里了,所以砍敌人的时候就改名字,读档的时候想还原,再次谢谢!
囡囚囨囚囨図囨囧
回复

使用道具 举报

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
回帖
864
发表于 2009-11-7 15:38:58 | 显示全部楼层
本帖最后由 secondsen 于 2009-11-7 15:46 编辑

不用谢,举手之劳而已

那啥。。。认可答案。。。我攒积分中。。。
回复

使用道具 举报

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
回帖
914
 楼主| 发表于 2009-11-13 08:32:19 | 显示全部楼层
1~20号class Game_Map
  def reset
    @events.clear
    for i in @map.events.keys
      @events = Game_Event.new(@map_id, @map.events) if i>0 && i < 21
    end
  end
endif i>0 && i < 21就加了这个东西。 ...
secondsen 发表于 2009-11-7 15:29



我加了if i>0 && i < 21,但是存盘退出再读取进游戏发现20号以上的事件都消失了!
囡囚囨囚囨図囨囧
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部