设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1863|回复: 4
打印 上一主题 下一主题

[已经解决] 脚本建立事件和删除事件

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
322 小时
注册时间
2011-6-24
帖子
274
跳转到指定楼层
1
发表于 2013-4-3 23:12:10 手机端发表。 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
在游戏里怎么用脚本复制某地图的事件到当前地图上来,我用过造房子,四处留情之类的脚本,但是很卡,哪为大哥能给个简单的,最好可以储存事件的

Lv1.梦旅人

梦石
0
星屑
50
在线时间
193 小时
注册时间
2013-3-24
帖子
448
2
发表于 2013-4-4 00:37:15 | 只看该作者
本帖最后由 joe5491 于 2013-4-4 12:30 编辑

在Main前插入
  1. class Eve_To_Map
  2.   def initialize(x, y, map_id, eve_id)
  3.     map = load_data(sprintf("Data/Map%03d.rxdata", map_id))
  4.     #p map.events[7]
  5.     for i in 200..300
  6.       if $game_map.events[i] == nil
  7.         $game_map.events[i] = Game_Event.new($game_map.map_id, map.events[eve_id])
  8.         $game_map.events[i].moveto(x,y)
  9.         $scene.spriteset = Spriteset_Map.new
  10.         break
  11.       end
  12.     end   
  13.   end
  14. end
复制代码
使用方法,使用腳本:Eve_To_Map.new(x座標, y座標, 地圖編號, 事件編號)

p.s. x座標和y座標是要在現在地圖上顯示的座標,地圖編號和事件編號是你要複製的事件的參數

對了!儲存事件是啥?(存到哪?)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
322 小时
注册时间
2011-6-24
帖子
274
3
 楼主| 发表于 2013-4-4 08:53:00 | 只看该作者
就是离开场景会在回来复制的事件还在,顺便问下改地图某坐标的地图块怎么弄
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
193 小时
注册时间
2013-3-24
帖子
448
4
发表于 2013-4-4 12:49:23 | 只看该作者
在Main前插入
  1. class Change_Tileset
  2.   def initialize(t_id)
  3.         $game_map.tileset_name = $data_tilesets[t_id].tileset_name
  4.         $game_map.autotile_names = $data_tilesets[t_id].autotile_names
  5.         $scene.spriteset = Spriteset_Map.new
  6.   end
  7. end
复制代码
使用方法,使用腳本:Change_Tileset.new(地圖區塊編號)

p.s. 地圖區塊編號是指資料庫裡的編號

然後...儲存事件目前還沒想到良好的解決方式....
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
193 小时
注册时间
2013-3-24
帖子
448
5
发表于 2013-4-4 18:37:17 | 只看该作者
解決了~
最終方案:
  1. #========================================================
  2. #★ 事件複製 -by joe59491
  3. #========================================================

  4. #========參數設定========================================
  5. $Eve_Control = 18  #是否要關閉自動回復地圖上的事件的開關編號
  6. #========================================================

  7. #========使用說明========================================
  8. #複製事件
  9. #Eve_To_Map.new(新X座標,新Y座標,複製事件所在地圖的編號,複製事件編號)
  10. #刪除事件(全部,針對複製的)
  11. #Dis_Eve.new
  12. #儲存事件(非自動,針對複製的)
  13. #Save_Eve.new
  14. #讀取事件(非自動,針對複製的)
  15. #Load_Eve.new
  16. #p.s. 當開關關閉時,會事件會被保留,否則會消失。
  17. #========================================================

  18. class Game_Character
  19.   attr_accessor   :id                       # ID
  20. end

  21. class Eve_To_Map
  22.   def initialize(x, y, map_id, eve_id)
  23.     map = load_data(sprintf("Data/Map%03d.rxdata", map_id))
  24.     #p map.events[7]
  25.     for i in 200..300
  26.       if $game_map.events[i] == nil
  27.         $game_map.events[i] = Game_Event.new($game_map.map_id, map.events[eve_id])
  28.         $game_map.events[i].moveto(x,y)
  29.         $game_map.events[i].id=i
  30.         $scene.spriteset = Spriteset_Map.new
  31.         break
  32.       end
  33.     end   
  34.   end
  35. end

  36. class Game_Map
  37.   attr_accessor :SEve
  38.   alias initialize_seve initialize
  39.   def initialize
  40.     @SEve=[0]
  41.     initialize_seve
  42.   end
  43.   alias update_seve update
  44.   def update
  45.    
  46.     if $game_map.need_refresh
  47.     #p  
  48.     end
  49.   update_seve
  50.   end
  51. end

  52. class Save_Eve
  53.   def initialize
  54.     $game_map.SEve[$game_map.map_id]=[0]
  55.     for i in 200..300
  56.       if $game_map.events[i] != nil
  57.         $game_map.SEve[$game_map.map_id][i-200] = $game_map.events[i]
  58.       end
  59.     end   
  60.   end
  61. end

  62. class Load_Eve
  63.   def initialize
  64.     if $game_map.SEve[$game_map.map_id]!=nil
  65.       for i in 0..100
  66.         if $game_map.SEve[$game_map.map_id][i] != nil and $game_map.SEve[$game_map.map_id][i] != 0
  67.           $game_map.events[i+200]=$game_map.SEve[$game_map.map_id][i]
  68.         end
  69.       end   
  70.     $scene.spriteset = Spriteset_Map.new
  71.     end
  72.   end
  73. end

  74. class Dis_Eve
  75.   def initialize
  76.     for i in 200..300
  77.       if $game_map.events[i] != nil
  78.         $game_map.events[i].erase
  79.       end
  80.     end  
  81.   end
  82. end

  83. class Interpreter
  84.   alias command_201_seve command_201
  85.   def command_201
  86.     if !$game_switches[$Eve_Control]
  87.       Save_Eve.new
  88.     end
  89.     command_201_seve
  90.   end
  91. end

  92. class Scene_Map
  93.   alias transfer_player_seve transfer_player
  94.   def transfer_player
  95.     transfer_player_seve
  96.     if !$game_switches[$Eve_Control]
  97.       Load_Eve.new   
  98.     end
  99.   end
  100. end
复制代码

评分

参与人数 1星屑 +100 收起 理由
hys111111 + 100 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-27 03:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表