Project1

标题: 夏娜大人的"在游戏运行中制作事件 "腳本 如何指定地圖ID? [打印本页]

作者: sai90306    时间: 2012-5-15 17:24
标题: 夏娜大人的"在游戏运行中制作事件 "腳本 如何指定地圖ID?
本帖最后由 sai90306 于 2012-5-15 19:35 编辑

請問夏娜大人的"在游戏运行中制作事件 "腳本如何修改才能添加指定地圖ID?
也就是主角在地圖1製作地圖2的事件 有可能實現嗎?
例如
produce_event(地圖ID,x,y,name,character_name)
這樣的形式
是在
Game_Event.new($game_map.map_id,produce_event(x,y,name,character_name))
這裡修改$game_map.map_id為指定變數嗎?

# 脚本说明:
# ● 在游戏运行中制作事件
# By:灼眼的夏娜
class Game_Map
attr_reader   :map
end
class Game_Character
attr_accessor :character_name
end
class Scene_Map
def conjure(x,y,name,character_name)
   $game_map.events[$game_map.events.size+1] = Game_Event.new($game_map.map_id,produce_event(x,y,name,character_name))
   $game_map.map.events[$game_map.events.size] = produce_event(x,y,name,character_name)
   @spriteset.dispose
   @spriteset = Spriteset_Map.new
end
def produce_event(x,y,name,character_name)
   e = RPG::Event.new(x,y)
   e.id = $game_map.events.size
   e.name = name
   e.pages = [RPG::Event::Page.new]   
   e.pages[0].graphic = RPG::Event::Page::Graphic.new
   e.pages[0].graphic.character_name = character_name   
   e.pages[0].step_anime = true
   e.pages[0].through = true
   #
   # 事件的一些其他属性大家可以自行设置
   #
   return e
end
end
dsu_plus_rewardpost_czw
作者: 叶子    时间: 2012-5-15 18:02
插入事件的完整语句是
  1. $game_map.events[$game_map.events.size+1] = Game_Event.new($game_map.map_id,produce_event(x,y,name,character_name))
复制代码
光修改Game_Event.new()的参数只是改变事件自带的变量,并不能改变插入的目标地图。
事件党解决方案:在生成事件目标地图(地图2)放置自动事件,执行生成脚本;本地图(地图1)触发的事件打开那个自动事件的自动运行开关
脚本党解决方案:可以延迟执行非本地图的生成事件代码至Game_Map::setup | 可以改mapNNN.rxdata | 总之还有很多方法..
作者: tommay    时间: 2012-5-15 18:12
参考下这个看看
http://rpg.blue/forum.php?mod=vi ... 4%E7%95%99%E6%83%85
作者: hys111111    时间: 2012-5-15 18:17
本帖最后由 hys111111 于 2012-5-15 18:18 编辑
  1. $game_map.map_id
复制代码
指的是当前地图ID,如果想在一号地图设置二号地图的事件
$game_map.map_id 必须要改为 2,其实不可以这样
所以最终要改成:
  1. # 脚本说明:
  2. # ● 在游戏运行中制作事件
  3. # By:灼眼的夏娜
  4. class Game_Map
  5. attr_reader   :map
  6. end
  7. class Game_Character
  8. attr_accessor :character_name
  9. end
  10. class Scene_Map
  11. def conjure(map_id,x,y,name,character_name)
  12.    @map = Game_Map.new.setup(map_id)
  13.    @map.events[$game_map.events.size+1] = Game_Event.new(map_id,produce_event(x,y,name,character_name))
  14.    @map.map.events[$game_map.events.size] = produce_event(x,y,name,character_name)
  15.    @spriteset.dispose
  16.    @spriteset = Spriteset_Map.new
  17. end
  18. def produce_event(map_id,x,y,name,character_name)
  19.    e = RPG::Event.new(x,y)
  20.    e.id = @map.events.size
  21.    e.name = name
  22.    e.pages = [RPG::Event::Page.new]   
  23.    e.pages[0].graphic = RPG::Event::Page::Graphic.new
  24.    e.pages[0].graphic.character_name = character_name   
  25.    e.pages[0].step_anime = true
  26.    e.pages[0].through = true
  27.    #
  28.    # 事件的一些其他属性大家可以自行设置
  29.    #
  30.    return e
  31. end
  32. end
复制代码
其实以上脚本指数更改了一下地图数据而已
作者: xszhu123    时间: 2012-5-15 23:18
(*^__^*) 嘻嘻……




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