Project1

标题: 更改A元件自动图块通行设置. [打印本页]

作者: 美兽    时间: 2008-2-26 20:04
标题: 更改A元件自动图块通行设置.
假设某个元件是不可通行,但临时想变成可通行,即可使用该功能.

SomeThing.tile_through(id, value)
id为图块位置,value为通行状态,134为可通行,143为不可通行.

自动元件的通行表起始位置为2000.每个元件展开后占48个位置,例如想更改A元件第2个图块的通行,可通过如下完成.

更改
SomeThing.tile_through(2, 134)

恢复
SomeThing.tile_through(2, 143)

其他元件的图块也可以如此完成,都是存在在一个表中,自己改下起始ID多测试就知道了.

module SomeThing
  
   def self.tile_through(id, value)
       start = 2000 + id * 48
       for i in 0..47
          $game_map.passages[start + i] = value
       end
   end  
   
end


图:


范例:
http://rpg.blue/UP_PIC/200801/通行临时变更_84456180.rar


[LINE]1,#dddddd[/LINE]
发布页面:http://rpg.blue/web/htm/news1082.htm
vip+3
作者: 精灵使者    时间: 2008-2-26 20:30
很不错。转到vx技术区。
作者: 越前リョーマ    时间: 2008-3-2 05:07
这是美兽为了6R幻想城的那个天空之城的那个地做的吧……{/hx}
作者: 3121362    时间: 2008-3-3 01:55
感觉很强啊  应该转到 主站的教学中啊
作者: 风雪优游    时间: 2008-3-6 01:29
= =|||
这个算是很高难度的教程了吧?

不,不是的....万一是中间点,到底要怎么数那是第几个图块啊?
作者: 雪流星    时间: 2008-3-6 09:24
我记得国外好像有人写了一个专门用来找元件ID的程序,不过我找不到了{/pz}

大概写了一个,在地图上按下 L 键就能显示所在图格的3层元件的ID

  1. class Scene_Map
  2.   alias passage_update update
  3.   def update
  4.     passage_update
  5.     if Input.trigger?(Input::L)
  6.       map_tile_id_0 = ($game_map.map.data[$game_player.x, $game_player.y, 0]-2000) / 48
  7.       map_tile_id_1 = ($game_map.map.data[$game_player.x, $game_player.y, 1]-2000) / 48
  8.       map_tile_id_2 = ($game_map.map.data[$game_player.x, $game_player.y, 2]+1)
  9.       
  10.       map_tile_id_0 = 0 if map_tile_id_0 == -42
  11.       map_tile_id_1 = 0 if map_tile_id_1 == -42
  12.       map_tile_id_2 = 0 if map_tile_id_2 == -42

  13.       map_tile_ids = "0: #{map_tile_id_0.to_s}   " +
  14.                      "1: #{map_tile_id_1.to_s}   " +
  15.                      "2: #{map_tile_id_2.to_s}"
  16.       p map_tile_ids
  17.     end
  18.   end
  19. end

  20. class Game_Map
  21. def map
  22.    return @map
  23. end
  24. end
复制代码

作者: Kesecky    时间: 2008-5-31 22:03
怎么ID 超过128就不能用呢?




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