Project1

标题: RPG::Event的问题 [打印本页]

作者: Wind2010    时间: 2012-5-13 19:08
标题: RPG::Event的问题
  1. module RPG
  2.   class Event
  3.     alias initialize_2333 initialize
  4.     def initialize(x,y)
  5.       initialize_2333(x,y)
  6.       @old_name = @name
  7.     end
  8.     attr_accessor :old_name
  9.   end
  10. end
复制代码
我哪里写错了么……测试时调用.old_name返回nildsu_plus_rewardpost_czw
作者: hys111111    时间: 2012-5-13 19:36
本帖最后由 hys111111 于 2012-5-13 19:42 编辑
  1. @old_name = ""
复制代码
由于module这里原先设定全部都是的是空的,
所以使用时应该设置为空的"",而@old_name = @name的话要在其他地方设置
  1. module RPG
  2.   class Event
  3.     def initialize(x, y)
  4.       @id = 0
  5.       @name = ""
  6.       @x = x
  7.       @y = y
  8.       @pages = [RPG::Event::Page.new]
  9.     end
  10.     attr_accessor :id
  11.     attr_accessor :name
  12.     attr_accessor :x
  13.     attr_accessor :y
  14.     attr_accessor :pages
  15.   end
  16. end

复制代码
另外我查明了一下,
放在Game_Event的
def initialize(map_id, event)里面,super()下面
并且还要这样:@event.old_name = @event.name
作者: orzfly    时间: 2012-5-13 20:07
游戏中是通过Marshal.load 加载的并不经过 initialize
作者: LOVE丶莫颜    时间: 2012-5-13 21:08
沙发是正解,你的确写错脚本了。
作者: Wind2010    时间: 2012-5-16 12:13
其实我是用放置提取物脚本做的ARPG后发现某地图的怪物一出去再进去就全被重置了- -
查看脚本后发现是因为用名字来定义的怪物的名字被修改了,因此再进去时不能重新加载@item
于是打算用个old_name的参数来确定那个事件是否是怪物……
下面这个是自己改的Game_Event中的initialize,怪物的命名方法是[mob-ID,Color]
  1. class Game_Event
  2.   attr_accessor :item
  3.   #=============================================================================
  4.   # 黑幕敌人
  5.   #=============================================================================
  6.   def initialize(map_id, event) # 可能会发生冲突
  7.     super()
  8.     @map_id = map_id
  9.     @event = event
  10.     @id = @event.id
  11.     @erased = false
  12.     @starting = false
  13.     @through = true
  14.     #===========================================================================
  15.     # 会发生冲突的地方
  16.     #===========================================================================
  17.     if @event.name.gsub("mob-"){""} != @event.name
  18.       enemy_id = @event.name.gsub("mob-"){""}.split(",")[0]
  19.       @item = L_ARPG_enemy.new(map_id,@id.to_i,enemy_id.to_i).clone
  20.       event_c = @event.name.gsub("mob-"){""}.split(",")[1]
  21.       event_c = "0" if event_c.nil?
  22.       @event.name = $data_enemies[enemy_id.to_i].name + "," + event_c ######## 事件的名字被更改掉了
  23.     elsif @event.name.gsub("animal-"){""} != @event.name
  24.       enemy_id = @event.name.gsub("animal-"){""}.split(",")[0]
  25.       @item = L_ARPG_animal.new(map_id,@id.to_i,enemy_id.to_i).clone
  26.       event_c = @event.name.gsub("animal-"){""}.split(",")[1]
  27.       event_c = "0" if event_c.nil?
  28.       @event.name = $data_enemies[enemy_id.to_i].name + "," + event_c
  29.     else
  30.       @item = nil
  31.     end
  32.     #===========================================================================
  33.     # 会发生冲突的地方
  34.     #===========================================================================
  35.     # 初期位置的移动
  36.     moveto(@event.x, @event.y)
  37.     refresh
  38.   end
  39. end
复制代码
因为还有个显示名字的脚本所以直接改掉事件的名字了
而在Game_Map的地图读取中原本读取的是Drop_Item里的地图,现在先改回load_data了,这个问题暂时解决,但是不知道以后还会不会跳Bug……


所以还是想给事件弄个不会被更改的old_name参数来确定那个事件是否是怪物,如果不能在RPG::Event里定义的话求指教……
作者: hys111111    时间: 2012-5-16 12:50
本帖最后由 hys111111 于 2012-5-16 12:52 编辑
  1. class Game_Event
  2.   attr_accessor :item
  3.   attr_accessor :old_name#我添加的
  4.   #=============================================================================
  5.   # 黑幕敌人
  6.   #=============================================================================
  7.   def initialize(map_id, event) # 可能会发生冲突
  8.     super()
  9.     @map_id = map_id
  10.     @event = event
  11.     @id = @event.id
  12.     @erased = false
  13.     @starting = false
  14.     @through = true
  15.     @old_name = @event.name#我添加的
  16.     #===========================================================================
  17.     # 会发生冲突的地方
  18.     #===========================================================================
  19.     if @event.name.gsub("mob-"){""} != @event.name
  20.       enemy_id = @event.name.gsub("mob-"){""}.split(",")[0]
  21.       @item = L_ARPG_enemy.new(map_id,@id.to_i,enemy_id.to_i).clone
  22.       event_c = @event.name.gsub("mob-"){""}.split(",")[1]
  23.       event_c = "0" if event_c.nil?
  24.       @event.name = $data_enemies[enemy_id.to_i].name + "," + event_c ######## 事件的名字被更改掉了
  25.     elsif @event.name.gsub("animal-"){""} != @event.name
  26.       enemy_id = @event.name.gsub("animal-"){""}.split(",")[0]
  27.       @item = L_ARPG_animal.new(map_id,@id.to_i,enemy_id.to_i).clone
  28.       event_c = @event.name.gsub("animal-"){""}.split(",")[1]
  29.       event_c = "0" if event_c.nil?
  30.       @event.name = $data_enemies[enemy_id.to_i].name + "," + event_c
  31.     else
  32.       @item = nil
  33.     end
  34.     #===========================================================================
  35.     # 会发生冲突的地方
  36.     #===========================================================================
  37.      #我添加的+++++
  38.      @event.name = @old_name if @event.name != @old_name
  39.      
  40.      #我添加的+++++
  41.     # 初期位置的移动
  42.     moveto(@event.x, @event.y)
  43.     refresh
  44.   end
  45. end
复制代码
我彻底晕倒……难道多搞一个accessor会死人吗?
作者: zhangbanxian    时间: 2012-5-16 15:00
  1. module RPG

  2.   class Event

  3.     alias marshal_load_2333 marshal_load
  4.     def marshal_load
  5.       marshal_load_2333
  6.       @old_name = @name

  7.     end

  8.     attr_accessor :old_name

  9.   end

  10. end
复制代码





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