Project1
标题:
RPG::Event的问题
[打印本页]
作者:
Wind2010
时间:
2012-5-13 19:08
标题:
RPG::Event的问题
module RPG
class Event
alias initialize_2333 initialize
def initialize(x,y)
initialize_2333(x,y)
@old_name = @name
end
attr_accessor :old_name
end
end
复制代码
我哪里写错了么……测试时调用.old_name返回nil dsu_plus_rewardpost_czw
作者:
hys111111
时间:
2012-5-13 19:36
本帖最后由 hys111111 于 2012-5-13 19:42 编辑
@old_name = ""
复制代码
由于module这里原先设定全部都是的是空的,
所以使用时应该设置为空的"",而@old_name = @name的话要在其他地方设置
module RPG
class Event
def initialize(x, y)
@id = 0
@name = ""
@x = x
@y = y
@pages = [RPG::Event::Page.new]
end
attr_accessor :id
attr_accessor :name
attr_accessor :x
attr_accessor :y
attr_accessor :pages
end
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]
class Game_Event
attr_accessor :item
#=============================================================================
# 黑幕敌人
#=============================================================================
def initialize(map_id, event) # 可能会发生冲突
super()
@map_id = map_id
@event = event
@id = @event.id
@erased = false
@starting = false
@through = true
#===========================================================================
# 会发生冲突的地方
#===========================================================================
if @event.name.gsub("mob-"){""} != @event.name
enemy_id = @event.name.gsub("mob-"){""}.split(",")[0]
@item = L_ARPG_enemy.new(map_id,@id.to_i,enemy_id.to_i).clone
event_c = @event.name.gsub("mob-"){""}.split(",")[1]
event_c = "0" if event_c.nil?
@event.name = $data_enemies[enemy_id.to_i].name + "," + event_c ######## 事件的名字被更改掉了
elsif @event.name.gsub("animal-"){""} != @event.name
enemy_id = @event.name.gsub("animal-"){""}.split(",")[0]
@item = L_ARPG_animal.new(map_id,@id.to_i,enemy_id.to_i).clone
event_c = @event.name.gsub("animal-"){""}.split(",")[1]
event_c = "0" if event_c.nil?
@event.name = $data_enemies[enemy_id.to_i].name + "," + event_c
else
@item = nil
end
#===========================================================================
# 会发生冲突的地方
#===========================================================================
# 初期位置的移动
moveto(@event.x, @event.y)
refresh
end
end
复制代码
因为还有个显示名字的脚本所以直接改掉事件的名字了
而在Game_Map的地图读取中原本读取的是Drop_Item里的地图,现在先改回load_data了,这个问题暂时解决,但是不知道以后还会不会跳Bug……
所以还是想给事件弄个不会被更改的old_name参数来确定那个事件是否是怪物,如果不能在RPG::Event里定义的话求指教……
作者:
hys111111
时间:
2012-5-16 12:50
本帖最后由 hys111111 于 2012-5-16 12:52 编辑
class Game_Event
attr_accessor :item
attr_accessor :old_name#我添加的
#=============================================================================
# 黑幕敌人
#=============================================================================
def initialize(map_id, event) # 可能会发生冲突
super()
@map_id = map_id
@event = event
@id = @event.id
@erased = false
@starting = false
@through = true
@old_name = @event.name#我添加的
#===========================================================================
# 会发生冲突的地方
#===========================================================================
if @event.name.gsub("mob-"){""} != @event.name
enemy_id = @event.name.gsub("mob-"){""}.split(",")[0]
@item = L_ARPG_enemy.new(map_id,@id.to_i,enemy_id.to_i).clone
event_c = @event.name.gsub("mob-"){""}.split(",")[1]
event_c = "0" if event_c.nil?
@event.name = $data_enemies[enemy_id.to_i].name + "," + event_c ######## 事件的名字被更改掉了
elsif @event.name.gsub("animal-"){""} != @event.name
enemy_id = @event.name.gsub("animal-"){""}.split(",")[0]
@item = L_ARPG_animal.new(map_id,@id.to_i,enemy_id.to_i).clone
event_c = @event.name.gsub("animal-"){""}.split(",")[1]
event_c = "0" if event_c.nil?
@event.name = $data_enemies[enemy_id.to_i].name + "," + event_c
else
@item = nil
end
#===========================================================================
# 会发生冲突的地方
#===========================================================================
#我添加的+++++
@event.name = @old_name if @event.name != @old_name
#我添加的+++++
# 初期位置的移动
moveto(@event.x, @event.y)
refresh
end
end
复制代码
我彻底晕倒……难道多搞一个accessor会死人吗?
作者:
zhangbanxian
时间:
2012-5-16 15:00
module RPG
class Event
alias marshal_load_2333 marshal_load
def marshal_load
marshal_load_2333
@old_name = @name
end
attr_accessor :old_name
end
end
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1