赞 | 0 |
VIP | 186 |
好人卡 | 0 |
积分 | 1 |
经验 | 5829 |
最后登录 | 2012-12-21 |
在线时间 | 83 小时 |
Lv1.梦旅人 龙皇
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 83 小时
- 注册时间
- 2007-8-8
- 帖子
- 2956
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
■ RMVX扩建地形标志脚本V2.0
前言:
在XP上有地形标誌的功能,但在VX却取消了该功能,
以至於要在VX地图上做一些特殊效果不容易达成,
不久前 我发了XP纯事件推箱子完美(无等待)效果
http://rpg.blue/viewthread.php?tid=114571
精灵问说没地形标誌的VX怎麼办.....
利用区域做出 的 地形标志脚本
现在都已经解决了
而且方法名称跟XP一样
V2.0版:
提升调用terrain_tag方法的效率
第二隐忧:
目前该V2.0版脚本存在隐忧就是...
脚本中的 # 过滤其它地图的区域资料 的地方
处理方式有点不妥....
当Areas.rvdata ($data_areas) 资料越来越庞大时
载入地图时所花费的时间相对加长
使用方法:
在生成区域命名的地方 命名成"数字"即可
如果命名為文字(字串)型式 调用时回传0
在没有区域的情况下调用时(默认下) 也回传0
------------------------------------------------------
调用方法:
获取角色当前所在地形标誌
$game_player.terrain_tag
获取某事件当前所在地形标誌
$game_map.events[事件编号].terrain_tag
------------------------------------------------------
事件脚本中常用的使用方法:
角色当前所在地形标誌 帶入 某变量中
$game_variables[变量编号] = $game_player.terrain_tag
某事件当前所在地形标誌 帶入 某变量中
$game_variables[变量编号] = $game_map.events[事件编号].terrain_tag
------------------------------------------------------
事件条件分歧脚本中常用的使用方法:
角色当前所在地形标誌 是否等于 值
$game_player.terrain_tag == 值
某事件当前所在地形标誌 是否等于 值
$game_map.events[事件编号].terrain_tag == 值
脚本:
- #==============================================================================
- # ■ 地形标志V2.0 By TERENCE(龙皇)
- #------------------------------------------------------------------------------
- # 使用方法:
- #
- # 在生成区域命名的地方 命名成"数字"即可
- # 如果命名為文字型(字串)型式 调用时回传0
- # 在没有区域的情况下调用时(默认下) 也回传0
- #------------------------------------------------------
- # 调用方法:
- #
- # 获取角色当前所在地形标誌
- # $game_player.terrain_tag
- #
- # 获取某事件当前所在地形标誌
- # $game_map.events[事件编号].terrain_tag
- #------------------------------------------------------
- # 事件脚本中常用的使用方法:
- #
- # 角色当前所在地形标誌 帶入 某变量中
- # $game_variables[变量编号] = $game_player.terrain_tag
- #
- # 某事件当前所在地形标誌 帶入 某变量中
- # $game_variables[变量编号] = $game_map.events[事件编号].terrain_tag
- #------------------------------------------------------
- # 事件条件分歧脚本中常用的使用方法:
- #
- # 角色当前所在地形标誌 是否等于 值
- # $game_player.terrain_tag == 值
- #
- # 某事件当前所在地形标誌 是否等于 值
- # $game_map.events[事件编号].terrain_tag == 值
- #
- #==============================================================================
- class Game_Map
- #--------------------------------------------------------------------------
- # ● 设置
- #--------------------------------------------------------------------------
- alias area_setup setup
- def setup(map_id)
- area_setup(map_id)
- # 生成 暂存过滤区域物件资料 数组
- $temp_area = []
- # 过滤其它地图的区域资料
- for n in 0..$data_areas.values.size-1
- if $data_areas.values[n].map_id == @map_id
- $temp_area.push $data_areas.values[n]
- end
- end
- end
- end
- class Game_Character
- #--------------------------------------------------------------------------
- # ● 判断是否在区域内
- #--------------------------------------------------------------------------
- def area?(area)
- return false if @x < area.rect.x
- return false if @y < area.rect.y
- return false if @x >= area.rect.x + area.rect.width
- return false if @y >= area.rect.y + area.rect.height
- return true
- end
- #--------------------------------------------------------------------------
- # ● 获取地形标志
- #--------------------------------------------------------------------------
- def terrain_tag
- # 获取地图ID
- map_id = $game_map.map_id
- # 回传 所在地形标志 的值
- for area in $temp_area
- if area?(area)
- return area.name.to_i
- end
- end
- # 默认下 回传0
- return 0
- end
- end
复制代码
范例工程:
http://rpg.blue/upload_program/d ... n_tag_111881102.rar |
|