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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: end55rpg
打印 上一主题 下一主题

[原创发布] 【4月13日更新】≮炸弹人≯【教程、范例,手稿】 - 人人可

[复制链接]

Lv2.观梦者

梦石
0
星屑
775
在线时间
173 小时
注册时间
2008-11-22
帖子
112
11
发表于 2012-4-14 13:03:18 | 只看该作者
本帖最后由 wyongcan2008 于 2012-4-14 13:05 编辑

我想还可以优化一下,在泡泡的判断中
如果炮炮威力*4+1>地图事件数,
就循环所有事件来判断,
如果小于的话就循环判断泡泡炸到的位置有没有事件。

我按照的做eventinfo的想法自己写了段脚本,用到了提取放置物脚本简洁版。
不过你说的事件是移动的这一点还真没考虑到。
  1. module Event
  2.   def self.xy_tos (x,y)
  3.     ox = x.to_s
  4.     oy = y.to_s
  5.     while ox.size < 3
  6.       ox = "0" + ox
  7.     end
  8.     while oy.size < 3
  9.       oy = "0" + oy
  10.     end
  11.     ox + oy
  12.   end
  13.   def self.id_byxy(x,y)
  14.     $game_map.eventinfo[xy_tos(x,y)]
  15.   end
  16.   def self.id_byxys(xy)
  17.     $game_map.eventinfo[xy]
  18.   end
  19.   def self.event_byxy(x,y)
  20.     $game_map.events[$game_map.eventinfo[xy_tos(x,y)]]
  21.   end
  22.   def self.event_byxys(xy)
  23.     $game_map.events[$game_map.eventinfo[xy]]
  24.   end
  25. end

  26. module Drop_Item
  27.     def self.make_events(map_id,event_id,item_x,item_y,save=false)
  28.       return unless self.is_map?        
  29.       map = load_data(sprintf("Data/Map%03d.rxdata", map_id))     
  30.       temp = Marshal.load(Marshal.dump(map))      
  31.       if !$game_system.map_events_number
  32.          $game_system.map_events_number = {}
  33.       end  
  34.       sum = $game_system.map_events_number      
  35.       m_id = $game_map.map_id      
  36.       sum[m_id] == nil ? sum[m_id] = 2000 : sum[m_id] += 1
  37.       new_event_id = sum[m_id]      
  38.       temp.events[event_id].id = new_event_id      
  39.       temp.events[event_id].x,temp.events[event_id].y = item_x,item_y      
  40.       $game_map.events[new_event_id] = Game_Event.new(m_id,temp.events[event_id])
  41.       #在添加事件时将事件也添加到eventinfo
  42.       $game_map.eventinfo[Event.xy_tos(item_x,item_y)] = new_event_id
  43.       refresh_map   
  44.   end
  45.    
  46.   def self.delete_events(event_id)
  47.       return unless self.is_map?   
  48.       #在删除事件时将eventinfo中的事件也删除
  49.       $game_map.eventinfo.delete(Event.xy_tos($game_map.events[event_id].x,$game_map.events[event_id].y))
  50.       $game_map.events.delete(event_id)
  51.       self.refresh_map
  52.   end
  53. end

  54. class Game_Map
  55.     attr_reader   :eventinfo                # 事件信息
  56.   #--------------------------------------------------------------------------
  57.   # ● 设置
  58.   #     map_id : 地图 ID
  59.   #--------------------------------------------------------------------------
  60.   def setup(map_id)
  61.     # 地图 ID 记录到 @map_id
  62.     @map_id = map_id
  63.     # 地图文件装载后、设置到 @map
  64.     @map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))
  65.     # 定义实例变量设置地图元件信息
  66.     tileset = $data_tilesets[@map.tileset_id]
  67.     @tileset_name = tileset.tileset_name
  68.     @autotile_names = tileset.autotile_names
  69.     @panorama_name = tileset.panorama_name
  70.     @panorama_hue = tileset.panorama_hue
  71.     @fog_name = tileset.fog_name
  72.     @fog_hue = tileset.fog_hue
  73.     @fog_opacity = tileset.fog_opacity
  74.     @fog_blend_type = tileset.fog_blend_type
  75.     @fog_zoom = tileset.fog_zoom
  76.     @fog_sx = tileset.fog_sx
  77.     @fog_sy = tileset.fog_sy
  78.     @battleback_name = tileset.battleback_name
  79.     @passages = tileset.passages
  80.     @priorities = tileset.priorities
  81.     @terrain_tags = tileset.terrain_tags
  82.     # 初始化显示坐标
  83.     @display_x = 0
  84.     @display_y = 0
  85.     # 清除刷新要求标志
  86.     @need_refresh = false
  87.     # 设置地图事件数据************
  88.     @events = {}
  89.     @eventinfo = {}
  90.     for i in @map.events.keys
  91.       @events[i] = Game_Event.new(@map_id, @map.events[i])
  92.       @eventinfo[Event.xy_tos(@events[i].x,@events[i].y)] = i #####
  93.     end
  94.     # 设置公共事件数据
  95.     @common_events = {}
  96.     for i in 1...$data_common_events.size
  97.       @common_events[i] = Game_CommonEvent.new(i)
  98.     end
  99.     # 初始化雾的各种信息
  100.     @fog_ox = 0
  101.     @fog_oy = 0
  102.     @fog_tone = Tone.new(0, 0, 0, 0)
  103.     @fog_tone_target = Tone.new(0, 0, 0, 0)
  104.     @fog_tone_duration = 0
  105.     @fog_opacity_duration = 0
  106.     @fog_opacity_target = 0
  107.     # 初始化滚动信息
  108.     @scroll_direction = 2
  109.     @scroll_rest = 0
  110.     @scroll_speed = 4
  111.   end
  112. end

  113. class Game_Event < Game_Character
  114.   #--------------------------------------------------------------------------
  115.   # ● 暂时消失****
  116.   #--------------------------------------------------------------------------
  117.   def erase
  118.     @erased = true
  119.     $game_map.eventinfo.delete(Event.xy_tos(@x,@y))
  120.     refresh
  121.   end
  122. end
复制代码

点评

楼下  发表于 2012-4-14 19:57
又不知道干什么好了。。。
回复 支持 反对

使用道具 举报

Lv2.观梦者

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

开拓者

12
 楼主| 发表于 2012-4-14 13:22:17 | 只看该作者
wyongcan2008 发表于 2012-4-14 13:03
我想还可以优化一下,在泡泡的判断中
如果炮炮威力*4+1>地图事件数,
就循环所有事件来判断,

的你代码看得云里雾里,你的文字我怎么理解不了了?请再说详细点吧

点评

大哥。你的判断5次还不是需要遍历所有事件才能够判断坐标在范围内?  发表于 2012-4-14 19:58
不是,如果泡泡威力是1,那么按炸到的地方来判断就只要判断5次,也就是上下左右和中间,如果这个次数大于地图上的事件数就遍历地图的事件  发表于 2012-4-14 13:33
炮炮威力*4+1>地图事件数 难道是奇特的公式?  发表于 2012-4-14 13:23
欢迎点此进入我的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]
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

13
发表于 2012-5-16 13:37:23 | 只看该作者
和魔塔样板不兼容···

点评

炸弹人+魔塔,这样不好哦,魔塔像素太低咯  发表于 2012-5-16 18:42
⊙﹏⊙b汗  发表于 2012-5-16 18:41
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
66 小时
注册时间
2013-9-4
帖子
94
14
发表于 2013-9-8 08:20:41 | 只看该作者
谢谢教程,收下了

点评

你是不是挖坟了……  发表于 2013-9-8 12:12
本人以后只点评!不回复!更不发主题!
(每次发资源都被扣分,还扣那么多!)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
56 小时
注册时间
2012-8-26
帖子
129
15
发表于 2013-9-10 15:00:29 | 只看该作者
lz写的真可怕,一个这样的游戏需要那么多脚本吗?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
100 小时
注册时间
2014-10-22
帖子
161
16
发表于 2015-8-31 07:39:34 | 只看该作者
我还要学呢图片怎么失效了啊{:4_147:}{:4_147:}

开一个坑,废一个坑
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
100 小时
注册时间
2014-10-22
帖子
161
17
发表于 2015-8-31 07:40:34 | 只看该作者
不用管我挖没挖坟,我是来学习的,这么精品的帖子沉在下边= =

点评

可是图片还是没补回来,现在沉了我还是学不了  发表于 2015-9-5 14:24
我说的是这条回复……上一个回帖没问题……  发表于 2015-9-5 14:15
什么啊,图片失效了!!!我学不了了!!!!!!!!!!  发表于 2015-9-5 14:09
然而你这算无意义回复……  发表于 2015-9-5 13:34

开一个坑,废一个坑
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-6-18 05:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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