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

Project1

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

[已经解决] 提取放置物脚本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2011-3-21
帖子
8
跳转到指定楼层
1
发表于 2012-4-19 20:59:15 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 qq1138614929 于 2012-4-19 21:00 编辑

我用的是完整版的为什么第119行错误呀
本人不会脚本那位大大说下谢谢

未命名.jpg (15.61 KB, 下载次数: 13)

未命名.jpg

点评

为什么脚本里我没发现tileset_id呢?  发表于 2012-4-20 18:21

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2011-3-21
帖子
8
7
 楼主| 发表于 2012-4-23 18:31:13 | 只看该作者
sai90306 发表于 2012-4-23 00:43
我用的是這個 試試看如何?

能否给个范例


‘‘──qq1138614929于2012-4-23 22:28补充以下内容

如何事件永久存儲呀
做素材用Adobe Photoshop CS这个可以吗
’’


‘‘──qq1138614929于2012-4-25 16:27补充以下内容

谢谢了

’’

点评

有需要可以看上面修正後的範例  发表于 2012-4-25 00:52
確實如果放在腳本的最上面會不能儲存!感謝提出 已經找到方法了 我測試在Game_Event的正下方插入 就沒問題了  发表于 2012-4-25 00:51
Drop_Item.make_events(2,2,x-1,y,true) 這裡的true就是永久的意思了  发表于 2012-4-24 04:58
給LZ上傳範例了 如果字看不到請到"腳本MAIN"修改"細明體"為"黑体"  发表于 2012-4-23 18:54
想到一件重要的事...就是這個佼本要放在所有腳本的最上面!  发表于 2012-4-23 18:40
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
461 小时
注册时间
2008-11-19
帖子
607
6
发表于 2012-4-23 00:43:06 | 只看该作者
本帖最后由 sai90306 于 2012-4-25 00:52 编辑
qq1138614929 发表于 2012-4-20 21:57
这么能保存事件呀
场所移动就消失了


我用的是這個 試試看如何?
  1. #==============================================================================
  2. # ☆★☆ 提取放置物腳本(強化) ☆★☆
  3. #------------------------------------------------------------------------------
  4. # - 美獸
  5. # - 2007.4.12
  6. #------------------------------------------------------------------------------
  7. #  愛護環境,人人有責,現實中切勿亂丟垃圾。
  8. #------------------------------------------------------------------------------
  9. #------------------------------------------------------------------------------
  10. #  腳本原理:
  11. #  是從倉庫地圖中提取事件,將其拷貝放入指定的位置,
  12. #  依此達成隨時隨地生成新事件的功能,如此可節省大量用RGSS編寫事件所消耗的體力,很多地方寫的
  13. #  很保守,盡量減少衝突幾率。。
  14. #  此為強化版,可實現新事件的保存,但代價是衝突的隨之增大,若只想單純實現ARPG
  15. #  一類的物品掉落,場所移動後便清除,請使用簡潔版。
  16. #------------------------------------------------------------------------------
  17. =begin
  18.                                 Note:

  19. 一:生成物品主方法:
  20.     Drop_Item.make_events(map_id,event_id,item_x,item_y,save=false)
  21.     map_id : 倉庫地圖的ID。
  22.     event_id : 倉庫中對應事件的ID。
  23.     item_x、item_y :新事件的X與Y坐標
  24.     save : 是否存儲標誌;
  25.            默認為false,即不存儲,場所移動等轉換場景後事件會消失;
  26.            true 為存儲,取檔、關機、登火星,返回後事件仍存在。

  27. 二:刪除事件方法:
  28.     事件名若包含"delete"字段,則執行完畢會立即自我清除;
  29.     註:任何事件皆如此。

  30. 三:必掌握語句:
  31.     $game_map.events[@event_id]
  32.     $game_player
  33.     事件的腳本使用,表示「本事件」和「角色」,主要為取得事件的坐標,
  34.     取得「本事件」X與Y坐標:$game_map.events[@event_id].event.x
  35.                             $game_map.events[@event_id].event.y
  36.     取得「角色」X與Y坐標:$game_player.x
  37.                           $game_player.y
  38.     例如,在某事件左側生成2號地圖的2號事件並永久存儲,寫法如下。
  39.     x = $game_map.events[@event_id].event.x
  40.     y = $game_map.events[@event_id].event.y
  41.     Drop_Item.make_events(2,2,x-1,y,true)

  42. 四:備註:
  43.     此腳本用法十分靈活,種植、建設、捨棄、掉寶等功能都可用以達成。

  44. =end
  45. #==============================================================================


  46. module Drop_Item

  47.   def self.make_events(map_id,event_id,item_x,item_y,save=false)
  48.       return unless self.is_map?
  49.       map = self.map_data_load(map_id)
  50.       temp = Marshal.load(Marshal.dump(map))
  51.       if !$game_system.map_events_number
  52.          $game_system.map_events_number = {}
  53.       end
  54.       sum = $game_system.map_events_number
  55.       m_id = $game_map.map_id
  56.       sum[m_id] == nil ? sum[m_id] = 2000 : sum[m_id] += 1
  57.       new_event_id = sum[m_id]
  58.       temp.events[event_id].id = new_event_id
  59.       temp.events[event_id].x,temp.events[event_id].y = item_x,item_y
  60.       $game_map.events[new_event_id] = Game_Event.new(m_id,temp.events[event_id])
  61.       if save
  62.          now_map = self.map_data_load(m_id)
  63.          now_map.events[new_event_id] = temp.events[event_id]
  64.          self.map_data_save(m_id,now_map)
  65.       end
  66.       refresh_map
  67.   end

  68.   def self.map_data_init
  69.       for i in 1..999
  70.          begin
  71.            map = load_data(sprintf("Data/Map%03d.rxdata", i))
  72.          rescue Errno::ENOENT
  73.            next
  74.          end
  75.          $game_system.map_data[i] = Marshal.load(Marshal.dump(map))
  76.       end
  77.   end

  78.   def self.map_data_save(map_id,event)
  79.       $game_system.map_data[$game_map.map_id] = event
  80.   end

  81.   def self.map_data_load(map_id)
  82.       if !$game_system.map_data
  83.          $game_system.map_data = {}
  84.          self.map_data_init
  85.       end
  86.       return $game_system.map_data[map_id]
  87.   end

  88.   def self.delete_events(event_id)
  89.       return unless self.is_map?
  90.       $game_map.events.delete(event_id)
  91.       self.refresh_map
  92.   end

  93.   def self.refresh_map
  94.       return unless self.is_map?
  95.       $scene.spriteset.dispose
  96.       $scene.spriteset = Spriteset_Map.new
  97.   end

  98.   def self.is_map?
  99.       (return true) if $scene.is_a?(Scene_Map)
  100.       return false
  101.   end

  102. end

  103. class Game_Map

  104.   def setup(map_id)
  105.       @map_id = map_id
  106.       #@map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))
  107.       @map = Drop_Item.map_data_load(@map_id)
  108.       tileset = $data_tilesets[@map.tileset_id]
  109.       @tileset_name = tileset.tileset_name
  110.       @autotile_names = tileset.autotile_names
  111.       @panorama_name = tileset.panorama_name
  112.       @panorama_hue = tileset.panorama_hue
  113.       @fog_name = tileset.fog_name
  114.       @fog_hue = tileset.fog_hue
  115.       @fog_opacity = tileset.fog_opacity
  116.       @fog_blend_type = tileset.fog_blend_type
  117.       @fog_zoom = tileset.fog_zoom
  118.       @fog_sx = tileset.fog_sx
  119.       @fog_sy = tileset.fog_sy
  120.       @battleback_name = tileset.battleback_name
  121.       @passages = tileset.passages
  122.       @priorities = tileset.priorities
  123.       @terrain_tags = tileset.terrain_tags
  124.       @display_x = 0
  125.       @display_y = 0
  126.       @need_refresh = false
  127.       @events = {}
  128.       for i in @map.events.keys
  129.         @events[i] = Game_Event.new(@map_id, @map.events[i])
  130.       end
  131.       @common_events = {}
  132.       for i in 1...$data_common_events.size
  133.         @common_events[i] = Game_CommonEvent.new(i)
  134.       end
  135.       @fog_ox = 0
  136.       @fog_oy = 0
  137.       @fog_tone = Tone.new(0, 0, 0, 0)
  138.       @fog_tone_target = Tone.new(0, 0, 0, 0)
  139.       @fog_tone_duration = 0
  140.       @fog_opacity_duration = 0
  141.       @fog_opacity_target = 0
  142.       @scroll_direction = 2
  143.       @scroll_rest = 0
  144.       @scroll_speed = 4
  145.   end

  146. end

  147. class Interpreter

  148.   def command_end
  149.       @list = nil
  150.       if @main and @event_id > 0
  151.          if $game_map.events[@event_id].event.name[/delete/].nil?
  152.             $game_map.events[@event_id].unlock
  153.          else
  154.             if $scene.is_a?(Scene_Map)
  155.                Drop_Item.delete_events(@event_id)
  156.                now_map = Drop_Item.map_data_load($game_map.map_id)
  157.                now_map.events.delete(@event_id)
  158.                Drop_Item.map_data_save($game_map.map_id,now_map)
  159.             end
  160.          end
  161.       end
  162.   end

  163. end

  164. class Game_System

  165.   attr_accessor :map_events_number
  166.   attr_accessor :map_data

  167. end

  168. class Scene_Map

  169.   attr_accessor :spriteset

  170. end
复制代码
應LZ要求放上範例 Project1.rar (183.83 KB, 下载次数: 36)

修正後的範例 Project0.rar (189.98 KB, 下载次数: 72)

点评

仔細一看 和上面幾位的相同阿 除了end大的再強化  发表于 2012-4-23 00:48
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2011-3-21
帖子
8
5
 楼主| 发表于 2012-4-20 21:57:53 | 只看该作者
end55rpg 发表于 2012-4-20 18:24
@qq1138614929用这个我修改过的吧
内制新的方法,在复制大量事件的时候,防止卡很久:
Drop_Item.set_event ...

这么能保存事件呀
场所移动就消失了


‘‘──qq1138614929于2012-4-21 18:06补充以下内容

我用的是这个脚本说是可以保存
#------------------------------------------------------------------------------
#  爱护环境,人人有责,现实中切勿乱丢垃圾。
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
#  脚本原理:
#  是从仓库地图中提取事件,将其拷贝放入指定的位置,
#  依此达成随时随地生成新事件的功能,如此可节省大量用RGSS编写事件所消耗的体力,很多地方写的
#  很保守,尽量减少冲突几率。。
#  此为强化版,可实现新事件的保存,但代价是冲突的随之增大,若只想单纯实现ARPG
#  一类的物品掉落,场所移动后便清除,请使用简洁版。
#------------------------------------------------------------------------------
=begin
                                Note:
  
一:生成物品主方法:
    Drop_Item.make_events(map_id,event_id,item_x,item_y,save=false)
    map_id : 仓库地图的ID。
    event_id : 仓库中对应事件的ID。
    item_x、item_y :新事件的X与Y坐标
    save : 是否存储标志;
           默认为false,即不存储,场所移动等转换场景后事件会消失;
           true 为存储,取档、关机、登火星,返回后事件仍存在。
           
二:删除事件方法:
    事件名若包含"delete"字段,则执行完毕会立即自我清除;
    注:任何事件皆如此。

三:必掌握语句:
    $game_map.events[@event_id]
    $game_player
    事件的脚本使用,表示“本事件”和“角色”,主要为取得事件的坐标,
    取得“本事件”X与Y坐标:$game_map.events[@event_id].event.x
                            $game_map.events[@event_id].event.y
    取得“角色”X与Y坐标:$game_player.x
                          $game_player.y                           
    例如,在某事件左侧生成2号地图的2号事件并永久存储,写法如下。
    x = $game_map.events[@event_id].event.x
    y = $game_map.events[@event_id].event.y
    Drop_Item.make_events(2,2,x-1,y,true)

四:备注:
    此脚本用法十分灵活,种植、建设、舍弃、掉宝等功能都可用以达成。   

=end
#==============================================================================


module Drop_Item
  
  def self.make_events(map_id,event_id,item_x,item_y,save=false)
      return unless self.is_map?        
      map = self.map_data_load(map_id)      
      temp = Marshal.load(Marshal.dump(map))      
      if !$game_system.map_events_number
         $game_system.map_events_number = {}
      end  
      sum = $game_system.map_events_number      
      m_id = $game_map.map_id      
      sum[m_id] == nil ? sum[m_id] = 2000 : sum[m_id] += 1
      new_event_id = sum[m_id]      
      temp.events[event_id].id = new_event_id      
      temp.events[event_id].x,temp.events[event_id].y = item_x,item_y      
      $game_map.events[new_event_id] = Game_Event.new(m_id,temp.events[event_id])
      if save
         now_map = self.map_data_load(m_id)
         now_map.events[new_event_id] = temp.events[event_id]
         self.map_data_save(m_id,now_map)
      end  
      refresh_map   
  end
   
  def self.map_data_init   
      for i in 1..999
         begin
           map = load_data(sprintf("Data/Map%03d.rxdata", i))
         rescue Errno::ENOENT
           next
         end
         $game_system.map_data = Marshal.load(Marshal.dump(map))         
      end
  end  
  
  def self.map_data_save(map_id,event)
      $game_system.map_data[$game_map.map_id] = event           
  end   

  def self.map_data_load(map_id)
      if !$game_system.map_data
         $game_system.map_data = {}
         self.map_data_init
      end
  end  
   
  def self.delete_events(event_id)
      return unless self.is_map?     
      $game_map.events.delete(event_id)
      self.refresh_map
  end
   
  def self.refresh_map
      return unless self.is_map?
      $scene.spriteset.dispose
      $scene.spriteset = Spriteset_Map.new   
  end
   
  def self.is_map?
      (return true) if $scene.is_a?(Scene_Map)
      return false
  end

end  

class Game_Map
  
  def setup(map_id)
      @map_id = map_id  
      #@map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))
      @map = Drop_Item.map_data_load(@map_id)
      tileset = $data_tilesets[@map.tileset_id]
      @tileset_name = tileset.tileset_name
      @autotile_names = tileset.autotile_names
      @panorama_name = tileset.panorama_name
      @panorama_hue = tileset.panorama_hue
      @fog_name = tileset.fog_name
      @fog_hue = tileset.fog_hue
      @fog_opacity = tileset.fog_opacity
      @fog_blend_type = tileset.fog_blend_type
      @fog_zoom = tileset.fog_zoom
      @fog_sx = tileset.fog_sx
      @fog_sy = tileset.fog_sy
      @battleback_name = tileset.battleback_name
      @passages = tileset.passages
      @priorities = tileset.priorities
      @terrain_tags = tileset.terrain_tags
      @display_x = 0
      @display_y = 0
      @need_refresh = false
      @events = {}
      for i in @map.events.keys
        @events = Game_Event.new(@map_id, @map.events)
      end
      @common_events = {}
      for i in 1...$data_common_events.size
        @common_events = Game_CommonEvent.new(i)
      end
      @fog_ox = 0
      @fog_oy = 0
      @fog_tone = Tone.new(0, 0, 0, 0)
      @fog_tone_target = Tone.new(0, 0, 0, 0)
      @fog_tone_duration = 0
      @fog_opacity_duration = 0
      @fog_opacity_target = 0
      @scroll_direction = 2
      @scroll_rest = 0
      @scroll_speed = 4
  end
   
end

class Interpreter
  
  def command_end
      @list = nil
      if @main and @event_id > 0
         if $game_map.events[@event_id].event.name[/delete/].nil?
            $game_map.events[@event_id].unlock            
         else
            if $scene.is_a?(Scene_Map)
               Drop_Item.delete_events(@event_id)
               now_map = Drop_Item.map_data_load($game_map.map_id)
               now_map.events.delete(@event_id)
               Drop_Item.map_data_save($game_map.map_id,now_map)              
            end         
         end         
      end
  end
   
end

class Game_System
  
  attr_accessor :map_events_number            
  attr_accessor :map_data            
   
end  

class Scene_Map
  
  attr_accessor :spriteset            
  
end  

’’


‘‘──qq1138614929于2012-4-22 22:08补充以下内容

‘‘──qq1138614929于2012-4-21 18:06补充以下内容

我用的是这个脚本说是可以保存
#------------------------------------------------------------------------------
#  爱护环境,人人有责,现实中切勿乱丢垃圾。
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
#  脚本原理:
#  是从仓库地图中提取事件,将其拷贝放入指定的位置,
#  依此达成随时随地生成新事件的功能,如此可节省大量用RGSS编写事件所消耗的体力,很多地方写的
#  很保守,尽量减少冲突几率。。
#  此为强化版,可实现新事件的保存,但代价是冲突的随之增大,若只想单纯实现ARPG
#  一类的物品掉落,场所移动后便清除,请使用简洁版。
#------------------------------------------------------------------------------
=begin
                                Note:
  
一:生成物品主方法:
    Drop_Item.make_events(map_id,event_id,item_x,item_y,save=false)
    map_id : 仓库地图的ID。
    event_id : 仓库中对应事件的ID。
    item_x、item_y :新事件的X与Y坐标
    save : 是否存储标志;
           默认为false,即不存储,场所移动等转换场景后事件会消失;
           true 为存储,取档、关机、登火星,返回后事件仍存在。
           
二:删除事件方法:
    事件名若包含"delete"字段,则执行完毕会立即自我清除;
    注:任何事件皆如此。

三:必掌握语句:
    $game_map.events[@event_id]
    $game_player
    事件的脚本使用,表示“本事件”和“角色”,主要为取得事件的坐标,
    取得“本事件”X与Y坐标:$game_map.events[@event_id].event.x
                            $game_map.events[@event_id].event.y
    取得“角色”X与Y坐标:$game_player.x
                          $game_player.y                           
    例如,在某事件左侧生成2号地图的2号事件并永久存储,写法如下。
    x = $game_map.events[@event_id].event.x
    y = $game_map.events[@event_id].event.y
    Drop_Item.make_events(2,2,x-1,y,true)

四:备注:
    此脚本用法十分灵活,种植、建设、舍弃、掉宝等功能都可用以达成。   

=end
#==============================================================================


module Drop_Item
  
  def self.make_events(map_id,event_id,item_x,item_y,save=false)
      return unless self.is_map?        
      map = self.map_data_load(map_id)      
      temp = Marshal.load(Marshal.dump(map))      
      if !$game_system.map_events_number
         $game_system.map_events_number = {}
      end  
      sum = $game_system.map_events_number      
      m_id = $game_map.map_id      
      sum[m_id] == nil ? sum[m_id] = 2000 : sum[m_id] += 1
      new_event_id = sum[m_id]      
      temp.events[event_id].id = new_event_id      
      temp.events[event_id].x,temp.events[event_id].y = item_x,item_y      
      $game_map.events[new_event_id] = Game_Event.new(m_id,temp.events[event_id])
      if save
         now_map = self.map_data_load(m_id)
         now_map.events[new_event_id] = temp.events[event_id]
         self.map_data_save(m_id,now_map)
      end  
      refresh_map   
  end
   
  def self.map_data_init   
      for i in 1..999
         begin
           map = load_data(sprintf("Data/Map%03d.rxdata", i))
         rescue Errno::ENOENT
           next
         end
         $game_system.map_data = Marshal.load(Marshal.dump(map))         
      end
  end  
  
  def self.map_data_save(map_id,event)
      $game_system.map_data[$game_map.map_id] = event           
  end   

  def self.map_data_load(map_id)
      if !$game_system.map_data
         $game_system.map_data = {}
         self.map_data_init
      end
  end  
   
  def self.delete_events(event_id)
      return unless self.is_map?     
      $game_map.events.delete(event_id)
      self.refresh_map
  end
   
  def self.refresh_map
      return unless self.is_map?
      $scene.spriteset.dispose
      $scene.spriteset = Spriteset_Map.new   
  end
   
  def self.is_map?
      (return true) if $scene.is_a?(Scene_Map)
      return false
  end

end  

class Game_Map
  
  def setup(map_id)
      @map_id = map_id  
      #@map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))
      @map = Drop_Item.map_data_load(@map_id)
      tileset = $data_tilesets[@map.tileset_id]
      @tileset_name = tileset.tileset_name
      @autotile_names = tileset.autotile_names
      @panorama_name = tileset.panorama_name
      @panorama_hue = tileset.panorama_hue
      @fog_name = tileset.fog_name
      @fog_hue = tileset.fog_hue
      @fog_opacity = tileset.fog_opacity
      @fog_blend_type = tileset.fog_blend_type
      @fog_zoom = tileset.fog_zoom
      @fog_sx = tileset.fog_sx
      @fog_sy = tileset.fog_sy
      @battleback_name = tileset.battleback_name
      @passages = tileset.passages
      @priorities = tileset.priorities
      @terrain_tags = tileset.terrain_tags
      @display_x = 0
      @display_y = 0
      @need_refresh = false
      @events = {}
      for i in @map.events.keys
        @events = Game_Event.new(@map_id, @map.events)
      end
      @common_events = {}
      for i in 1...$data_common_events.size
        @common_events = Game_CommonEvent.new(i)
      end
      @fog_ox = 0
      @fog_oy = 0
      @fog_tone = Tone.new(0, 0, 0, 0)
      @fog_tone_target = Tone.new(0, 0, 0, 0)
      @fog_tone_duration = 0
      @fog_opacity_duration = 0
      @fog_opacity_target = 0
      @scroll_direction = 2
      @scroll_rest = 0
      @scroll_speed = 4
  end
   
end

class Interpreter
  
  def command_end
      @list = nil
      if @main and @event_id > 0
         if $game_map.events[@event_id].event.name[/delete/].nil?
            $game_map.events[@event_id].unlock            
         else
            if $scene.is_a?(Scene_Map)
               Drop_Item.delete_events(@event_id)
               now_map = Drop_Item.map_data_load($game_map.map_id)
               now_map.events.delete(@event_id)
               Drop_Item.map_data_save($game_map.map_id,now_map)              
            end         
         end         
      end
  end
   
end

class Game_System
  
  attr_accessor :map_events_number            
  attr_accessor :map_data            
   
end  

class Scene_Map
  
  attr_accessor :spriteset            
  
end  

’’

点评

.....不知道,好像这个版本是过地图消失的版本= =  发表于 2012-4-21 09:39
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
690
在线时间
791 小时
注册时间
2011-10-20
帖子
2394

开拓者

4
发表于 2012-4-20 18:24:00 | 只看该作者
@qq1138614929


  1. module Drop_Item
  2.   
  3.   def self.make_events(map_id,event_id,item_x,item_y,save=false)
  4.       return unless self.is_map?        
  5.       map = load_data(sprintf("Data/Map%03d.rxdata", map_id))     
  6.       temp = Marshal.load(Marshal.dump(map))      
  7.       if !$game_system.map_events_number
  8.          $game_system.map_events_number = {}
  9.       end  
  10.       sum = $game_system.map_events_number      
  11.       m_id = $game_map.map_id      
  12.       sum[m_id] == nil ? sum[m_id] = 2000 : sum[m_id] += 1
  13.       new_event_id = sum[m_id]      
  14.       temp.events[event_id].id = new_event_id      
  15.       temp.events[event_id].x,temp.events[event_id].y = item_x,item_y      
  16.       $game_map.events[new_event_id] = Game_Event.new(m_id,temp.events[event_id])
  17.       refresh_map   
  18.     end
  19.     #
  20.     def self.set_event(map_id,event_id,item_x,item_y,times)
  21.       return unless self.is_map?        
  22.       map = load_data(sprintf("Data/Map%03d.rxdata", map_id))
  23.       sum = 1999
  24.       for i in 0..times-1
  25.       temp = Marshal.load(Marshal.dump(map))      
  26.       if !$game_system.map_events_number
  27.          $game_system.map_events_number = {}
  28.        end  
  29.       
  30.       #sum = $game_system.map_events_number
  31.       m_id = $game_map.map_id      
  32.       sum += 1
  33.       new_event_id = sum     
  34.       temp.events[event_id].id = new_event_id      
  35.       temp.events[event_id].x,temp.events[event_id].y = item_x,item_y
  36.         $game_map.events[new_event_id] = Game_Event.new(m_id,temp.events[event_id])
  37.       end
  38.       refresh_map   
  39.     end
  40.     #
  41.   def self.delete_events(event_id)
  42.       return unless self.is_map?     
  43.       $game_map.events.delete(event_id)
  44.       self.refresh_map
  45.   end
  46.   #
  47.   def self.refresh_map
  48.       return unless self.is_map?
  49.       $scene.spriteset.dispose
  50.       $scene.spriteset = Spriteset_Map.new   
  51.   end
  52.    
  53.   def self.is_map?
  54.       (return true) if $scene.is_a?(Scene_Map)
  55.       return false
  56.   end

  57. end  

  58. class Interpreter
  59.   
  60.   def commands_end
  61.       @list = nil
  62.       if @main and @event_id > 0
  63.          if $game_map.events[@event_id].event.name[/delete/].nil?
  64.             $game_map.events[@event_id].unlock            
  65.          else
  66.             if $scene.is_a?(Scene_Map)
  67.                Drop_Item.delete_events(@event_id)            
  68.             end         
  69.          end         
  70.       end
  71.   end
  72.    
  73. end

  74. class Game_System
  75.   
  76.   attr_accessor :map_events_number            
  77.   attr_accessor :map_data            
  78.    
  79. end  

  80. class Scene_Map
  81.   
  82.   attr_accessor :spriteset            
  83.   
  84. end  
复制代码
用这个我修改过的吧
内制新的方法,在复制大量事件的时候,防止卡很久:
Drop_Item.set_event(map_id,event_id,item_x,item_y,times)
                               仓库地图,事件ID,出生X,出生Y,数量

点评

NO,原因是重复读取地图而花费N秒  发表于 2012-4-20 21:16
其实卡很久是因为一直在描绘事件……目测改动不打  发表于 2012-4-20 19:39
欢迎点此进入我的egames.wink.ws,有RMQQ堂等

[url=http://rpg.blue/thread-317273-1-1.html]短篇八-赶选

http://yun.baidu.com/share/link?shareid=2158225779&uk=169642147&third=0


历险ARPG赢回你的疆域新的战斗模式?…………点击这里:[宋乱贼狂 for QQ堂]
http://rpg.blue/group-368-1.html
programing ....?
[url=http://rpg.blue/thrd-234658-1-1.html]
回复

使用道具 举报

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
3
发表于 2012-4-20 17:17:38 | 只看该作者
请确定下指令中的仓库地图是否存在

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
461 小时
注册时间
2008-11-19
帖子
607
2
发表于 2012-4-19 23:54:54 | 只看该作者
本帖最后由 sai90306 于 2012-4-20 01:09 编辑

這腳本我也有用 超愛!可是沒遇到問題
能請LZ把工程放上來嗎?簡單的我可以幫忙看看

点评

或是說明一下LZ如何使用腳本的?  发表于 2012-4-20 09:01
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 04:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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