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

Project1

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

RMVX地形标志V2.0版(过期帖)

 关闭 [复制链接]

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
跳转到指定楼层
1
发表于 2009-1-8 09:43:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

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 ==


脚本:

  1. #==============================================================================
  2. # ■ 地形标志V2.0  By TERENCE(龙皇)
  3. #------------------------------------------------------------------------------
  4. #  使用方法:
  5. #
  6. #   在生成区域命名的地方  命名成"数字"即可
  7. #   如果命名為文字型(字串)型式  调用时回传0
  8. #   在没有区域的情况下调用时(默认下)  也回传0
  9. #------------------------------------------------------
  10. #   调用方法:
  11. #
  12. #   获取角色当前所在地形标誌
  13. #   $game_player.terrain_tag
  14. #   
  15. #   获取某事件当前所在地形标誌
  16. #   $game_map.events[事件编号].terrain_tag
  17. #------------------------------------------------------
  18. #   事件脚本中常用的使用方法:
  19. #
  20. #   角色当前所在地形标誌  帶入 某变量中
  21. #   $game_variables[变量编号] = $game_player.terrain_tag
  22. #
  23. #   某事件当前所在地形标誌  帶入 某变量中
  24. #   $game_variables[变量编号] = $game_map.events[事件编号].terrain_tag
  25. #------------------------------------------------------
  26. #   事件条件分歧脚本中常用的使用方法:
  27. #
  28. #   角色当前所在地形标誌  是否等于 值
  29. #   $game_player.terrain_tag == 值
  30. #
  31. #   某事件当前所在地形标誌  是否等于 值
  32. #   $game_map.events[事件编号].terrain_tag == 值
  33. #
  34. #==============================================================================
  35. class Game_Map
  36.   #--------------------------------------------------------------------------
  37.   # ● 设置
  38.   #--------------------------------------------------------------------------
  39.   alias area_setup setup
  40.   def setup(map_id)
  41.     area_setup(map_id)
  42.     # 生成 暂存过滤区域物件资料 数组
  43.     $temp_area = []
  44.     # 过滤其它地图的区域资料
  45.     for n in 0..$data_areas.values.size-1
  46.       if $data_areas.values[n].map_id == @map_id
  47.         $temp_area.push $data_areas.values[n]
  48.       end
  49.     end
  50.   end
  51. end

  52. class Game_Character
  53.   #--------------------------------------------------------------------------
  54.   # ● 判断是否在区域内
  55.   #--------------------------------------------------------------------------
  56.   def area?(area)
  57.     return false if @x < area.rect.x
  58.     return false if @y < area.rect.y
  59.     return false if @x >= area.rect.x + area.rect.width
  60.     return false if @y >= area.rect.y + area.rect.height
  61.     return true
  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # ● 获取地形标志
  65.   #--------------------------------------------------------------------------
  66.   def terrain_tag
  67.     # 获取地图ID
  68.     map_id = $game_map.map_id
  69.     # 回传 所在地形标志 的值
  70.     for area in $temp_area
  71.       if area?(area)
  72.         return area.name.to_i
  73.       end
  74.     end
  75.     # 默认下 回传0
  76.     return 0
  77.   end
  78. end
复制代码

范例工程:
http://rpg.blue/upload_program/d ... n_tag_111881102.rar

                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说
头像被屏蔽

Lv1.梦旅人 (禁止发言)

6r最强害虫!

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-11-9
帖子
950
2
发表于 2009-1-8 15:43:03 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
3
 楼主| 发表于 2009-1-8 15:57:44 | 只看该作者
以下引用疯鸡瘫圣老贱于2009-1-8 7:43:03的发言:

收下……
繁体……
区域过多也是不好的……

工程有乱码吗??
我记得是用简体啊....

                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

4
发表于 2009-1-8 18:54:05 | 只看该作者
区域其实可以从区域名下手。
建议从图块或者自动元件下手比较好
回复 支持 反对

使用道具 举报

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
5
 楼主| 发表于 2009-1-8 19:16:09 | 只看该作者
以下引用精灵使者于2009-1-8 10:54:05的发言:
区域其实可以从区域名下手。
建议从图块或者自动元件下手比较好

本脚本 就是从 区域名下手
这里最棘手的就是....
VX把每张地图的区域资讯全都挤在
Areas.rvdata ( $data_areas )  里

所以才需要 过滤其他地图的区域部分( 的回圈 )

                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

6
发表于 2009-1-8 19:17:56 | 只看该作者
这个这不就成显示地图名的方法了么?
每次进map的时候刷新此map的area,而不是直接读取所有的area然后刷新……这样应该会好些。
另外,考虑一下area重叠的问题。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
7
 楼主| 发表于 2009-1-8 19:35:42 | 只看该作者
以下引用精灵使者于2009-1-8 11:17:56的发言:
这个这不就成显示地图名的方法了么?
每次进map的时候刷新此map的area,而不是直接读取所有的area然后刷新……这样应该会好些。
另外,考虑一下area重叠的问题。

这就是我所伤脑筋的地方
這也是一定要过滤
map资讯跟area资讯是无关的

之所以可以判断角色是否在该地图的某区内
是由 MAP的ID 跟 $data_areas(类似数组)里所有map_id方法  作判定

$data_areas.values以数组方式存放"所有"地图的区域  每张区域都有存放map_id
p $data_areas.values 就一目了然

                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说
回复 支持 反对

使用道具 举报

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
8
 楼主| 发表于 2009-1-8 19:40:15 | 只看该作者
关於重叠 MS 以最先 生成区域的为主(无论该区命名是否为字串)

                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

9
发表于 2009-1-8 22:55:58 | 只看该作者
建议在移动场所的函数里面调出值重新读入一次关于此map的area比较好些。这样可以减少并行事件
在场所移动而且移动的map ID不相同的时间进行AREA的处理
回复 支持 反对

使用道具 举报

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
10
 楼主| 发表于 2009-1-9 00:42:12 | 只看该作者
以下引用精灵使者于2009-1-8 14:55:58的发言:

建议在移动场所的函数里面调出值重新读入一次关于此map的area比较好些。这样可以减少并行事件
在场所移动而且移动的map ID不相同的时间进行AREA的处理

精灵的意思是....
在载入地图数据rvdata时,
先進行  过滤其他地图的区域部分( 的回圈 )  嗎?

这样的确能提升调用terrain_tag方法的效率
但是载入地图时所花费的时间相对加长些喔!!

                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 08:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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