| 
 
| 赞 | 1 |  
| VIP | 2 |  
| 好人卡 | 18 |  
| 积分 | 3 |  
| 经验 | 7766 |  
| 最后登录 | 2012-5-1 |  
| 在线时间 | 227 小时 |  
 Lv2.观梦者 
	梦石0 星屑255 在线时间227 小时注册时间2009-7-26帖子216 | 
| 本帖最后由 darkscout3000 于 2011-10-12 11:05 编辑 
 先回答第一个问题
 事件的名字这个嘛是在Game_Map类里头,有个@map属性这里用的就是RPG::Event类
 
 第二个问题
 这个其实一点都不复杂
 你需要做三件事情
 
 第一步,在地图的数据中加入事件
 Game_Map类里头有个@events属性,纪录了地图上所有的事件
 你需要做的就是加一个事件进去,把这段插入 Game_Map 类
 那个pages其实很好理解,你知道每个事件都有很多事件页吧?pages[0]就是第一页复制代码def add_event(x, y, name, picture_name)
  event = RPG::Event.new(x,y, name) 
  event.name = name                      # 事件名字
  event.id = @events.keys.max + 1 # 事件ID
  event.pages[0].graphic.character_name = picture_name  #事件图像
  event.pages[0].walk_anime = true      #选项「移动时动画」的真伪值。
  event.pages[0].step_anime = true      #选项「停止时动画」的真伪值。
  event.pages[0].direction_fix  = false   #选项「固定朝向」的真伪值。
  event.pages[0].through = false          #选项「充许穿透」的真伪值。
  event.pages[0].always_on_top           #选项「在最前面显示」的真伪值。
  event.pages[0].trigger = 0         #触发条件(0:决定键,1:与主角接触,2:与事件接触,3:自动执行,4:并行处理)。
  event.pages[0].list.push(RPG::MoveCommand(355, ["脚本代码第一行", "脚本第二行" ...])) # 355 是执行脚本的代码
  @events[event.id] = event
  return event.id
end
你在地图上添加事件不是可以选择一个角色图片么?你就用那个里头的名字就好了(只要名字,不要路径)
 大多属性还是比较直观的,就是加入事件比较麻烦
 
 第二步,把事件添加到地图精灵组
 事件在地图上显示是Spriteset_Map类控制的
 总之先在Spriteset_Map类中加入以下方法
 第三步,让事件显示出来复制代码def add_event_sprite(event_id)
  sprite = Sprite_Character.new(@viewport1, $game_map.events[event_id])
  @character_sprites.push(sprite)
end
最后是Scene_Map类
 加入以下方法
 这样就基本完成了复制代码def add_event(x, y, name, picture_name)
  event_id = $game_map.add_event(x,y,name,picture_name)
  @spriteset.add_event_sprite(event_id)
剩下的就是写个脚本(前提是你在地图上)
 然后阿尔西斯就在地图坐标(10,10)出现了⋯⋯复制代码
$scene.add_event(10,10,"noob", "001-Fighter01")
 如果有bug就问吧,毕竟是凭记忆打的代码⋯⋯
 
 ���
 | 
 评分
查看全部评分
 |