赞 | 40 |
VIP | 559 |
好人卡 | 234 |
积分 | 47 |
经验 | 251834 |
最后登录 | 2024-12-30 |
在线时间 | 5241 小时 |
Lv3.寻梦者 (版主) 八宝粥的基叔
- 梦石
- 0
- 星屑
- 4714
- 在线时间
- 5241 小时
- 注册时间
- 2009-4-29
- 帖子
- 14318
|
范例:
Project2.rar
(240.43 KB, 下载次数: 60)
截图:
脚本:- #==============================================================================
- # ■ P叔的角色特殊通行系统
- # 不同的角色在队伍中,可以实现不同的通行效果,比如穿越山谷,穿越河流等
- #------------------------------------------------------------------------------
- # 使用时请注明脚本来源:
- # 本脚本来自[url]www.66rpg.com[/url]
- #==============================================================================
- #==============================================================================
- # ■ Game_Map
- #------------------------------------------------------------------------------
- # 处理地图的类。包含卷动以及可以通行的判断功能。本类的实例请参考 $game_map 。
- #==============================================================================
- class Game_Map
- # 山地的图块ID在下面设置(默认为A2图块的四种山地)
- Hilly_Tiles = [2912..2952, 3296..3336, 3680..3720, 4064..4104]
- # 河流的图块ID在下面设置
- River_Tiles = [2048..2088]
- # 可以走山的角色(多人的话用英文逗号隔开)
- Hilly_Actors = [2]
- # 可以走河的角色(多人的话用英文逗号隔开)
- River_Actors = [3]
- # 既可以走山又可以走河的角色(多人的话用英文逗号隔开)
- Both_Able_Actors = [4]
- #--------------------------------------------------------------------------
- # ● 初始化对像
- #--------------------------------------------------------------------------
- def initialize
- @screen = Game_Screen.new
- @interpreter = Game_Interpreter.new(0, true)
- @map_id = 0
- @display_x = 0
- @display_y = 0
- create_vehicles
- tile_to_a
- end
- #--------------------------------------------------------------------------
- # ● 可以通行判定
- # x : X 坐标
- # y : Y 坐标
- # flag : 通行度标志(非交通工具时,一般为 0x01)
- #--------------------------------------------------------------------------
- def passable?(x, y, flag = 0x01)
- for event in events_xy(x, y) # 循环指定位置的事件数组
- next if event.tile_id == 0 # 事件图片非图块的情况下
- next if event.priority_type > 0 # 非「一般角色之下」
- next if event.through # 允许穿透
- pass = @passages[event.tile_id] # 获取通行属性
- next if pass & 0x10 == 0x10 # ☆: 不影响通行判定
- return true if pass & flag == 0x00 # ○: 可以通行
- return false if pass & flag == flag # x: 不可通行
- end
- for i in [2, 1, 0] # 由上层而下
- tile_id = @map.data[x, y, i] # 获取图块 ID
- return false if tile_id == nil # 无法获取图块:不可通行
- pass = @passages[tile_id] # 获取通行属性
- return true if special_pass_member(tile_id)
- next if pass & 0x10 == 0x10 # ☆: 不影响通行判定
- return true if pass & flag == 0x00 # o: 可以通行
- return false if pass & flag == flag # x: 不可通行
- end
- return false # 不可通行
- end
- #--------------------------------------------------------------------------
- # ● 范围转化成数组
- #--------------------------------------------------------------------------
- def tile_to_a
- @ht = []
- for i in Hilly_Tiles
- @ht << i.to_a
- end
- @ht.flatten!
-
- @rt = []
- for i in River_Tiles
- @rt << i.to_a
- end
- @rt.flatten!
- @bt = @ht + @rt
- end
- #--------------------------------------------------------------------------
- # ● 特殊角色通行判定
- #--------------------------------------------------------------------------
- def special_pass_member(tile_id)
- for i in $game_party.members
- if Hilly_Actors.include?(i.id)
- if @ht.include?(tile_id)
- return true
- end
- end
- end
- for i in $game_party.members
- if River_Actors.include?(i.id)
- if @rt.include?(tile_id)
- return true
- end
- end
- end
- for i in $game_party.members
- if Both_Able_Actors.include?(i.id)
- if @bt.include?(tile_id)
- return true
- end
- end
- end
- return false
- end
- end
复制代码 |
评分
-
查看全部评分
|