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

Project1

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

[RMVX发布] RM_VX地形标志V3.5_图块版本(脚本优化)

 关闭 [复制链接]

Lv1.梦旅人

龙皇

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

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

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

x
■ RM_VX地形标志V3.5_图块版本
前言:
在XP上有地形标誌的功能,但在VX却取消了该功能,
以至於要在VX地图上做一些特殊效果不容易达成,
不久前 我发了XP纯事件推箱子完美(无等待)效果
http://rpg.blue/viewthread.php?tid=114571
精灵问说没地形标誌的VX怎麼办.....

利用图块做出 的 地形标志脚本
现在都已经解决了
而且方法名称跟XP一样


第一次发的地形标志帖子过期帖处里!!



地形标志设置方法:
A~E每张图块ID都是从最左上方开始计算(由左到右)
001,002,003,004,005,006,007,008
009,010,011,012,013,014,015,016
...............................
249,250,251,252,253,254,255,256

{ 图块ID=>地形标志值 ,图块ID=>地形标志值 ,.......}
如果没设置地形标志值 调用后默认值为0
------------------------------------------------------
★注意事项:
[B页]的第一格空白图块是"不能"设置地形标志的
因为它是专门清理图块B~E的工具   而非图块
所以图块[B页]的部分 ID从第二格002开始计算

001[X设置不能],002,003,004,005,006,007,008
...............................

另外如果图层地形标志重叠,
以高图层的B~E为主!!
------------------------------------------------------
调用方法:
获取角色当前所在地形标誌
$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 ==

V3.5感谢流星姐的脚本优化)

  1. #==============================================================================
  2. # ■ RM_VX地形标志V3.0_图块版本 By TERENCE(龙皇)
  3. #------------------------------------------------------------------------------
  4. #  地形标志设置方法:
  5. #  A~E每张图块ID都是从最左上方开始计算(由左到右)
  6. #   001,002,003,004,005,006,007,008
  7. #   009,010,011,012,013,014,015,016
  8. #   ...............................
  9. #   249,250,251,252,253,254,255,256
  10. #
  11. #   { 图块ID=>地形标志值 ,图块ID=>地形标志值 ,.......}
  12. #   如果没设置地形标志值 调用后默认值为0
  13. #------------------------------------------------------
  14. #   ★注意事项:
  15. #   [B页]的第一格空白图块是"不能"设置地形标志的
  16. #   因为它是专门清理图块B~E的工具   而非图块
  17. #   所以图块[B页]的部分 ID从第二格002开始计算
  18. #
  19. #   001[X设置不能],002,003,004,005,006,007,008
  20. #   ...............................
  21. #------------------------------------------------------
  22. #   调用方法:
  23. #
  24. #   获取角色当前所在地形标誌
  25. #   $game_player.terrain_tag
  26. #   
  27. #   获取某事件当前所在地形标誌
  28. #   $game_map.events[事件编号].terrain_tag
  29. #------------------------------------------------------
  30. #   事件脚本中常用的使用方法:
  31. #
  32. #   角色当前所在地形标誌  帶入 某变量中
  33. #   $game_variables[变量编号] = $game_player.terrain_tag
  34. #
  35. #   某事件当前所在地形标誌  帶入 某变量中
  36. #   $game_variables[变量编号] = $game_map.events[事件编号].terrain_tag
  37. #------------------------------------------------------
  38. #   事件条件分歧脚本中常用的使用方法:
  39. #
  40. #   角色当前所在地形标誌  是否等于 值
  41. #   $game_player.terrain_tag == 值
  42. #
  43. #   某事件当前所在地形标誌  是否等于 值
  44. #   $game_map.events[事件编号].terrain_tag == 值
  45. #
  46. #==============================================================================

  47. class Game_Character
  48. #--------------------------------------------------------------------------
  49. # ● 地形标志设置区
  50. #--------------------------------------------------------------------------

  51.   # 图块A的部分_ID (ID:1~256)
  52.   MAP_TILE_A = {1=>0 ,256=>0}
  53.   MAP_TILE_A.default = 0

  54.   # 图块B的部分_ID  (ID:2~256) ★
  55.   MAP_TILE_B = {2=>0 ,256=>0}
  56.   MAP_TILE_B.default = 0

  57.   # 图块C的部分_ID  (ID:1~256)
  58.   MAP_TILE_C = {1=>0 ,256=>0}
  59.   MAP_TILE_C.default = 0

  60.   # 图块D的部分_ID  (ID:1~256)
  61.   MAP_TILE_D = {1=>0 ,256=>0}
  62.   MAP_TILE_D.default = 0

  63.   # 图块E的部分_ID  (ID:1~256)
  64.   MAP_TILE_E = {1=>0 ,256=>0}
  65.   MAP_TILE_E.default = 0

  66. #--------------------------------------------------------------------------
  67. # ● 获取地形标志
  68. #--------------------------------------------------------------------------
  69.   def terrain_tag   
  70.     # 计算图块ID数值
  71.     a = $game_map.data[@x, @y, 0]-2000
  72.     map_tile_id_0 = (a >= 0) ? a/48 : (a+593)
  73.     map_tile_id_1 = ($game_map.data[@x, @y, 1]-2000) / 48
  74.     map_tile_id_2 = ($game_map.data[@x, @y, 2]+1)
  75.          
  76.     map_tile_id_0 = 0 if map_tile_id_0 == -42 # A
  77.     map_tile_id_1 = 0 if map_tile_id_1 == -42 # I
  78.     map_tile_id_2 = 0 if map_tile_id_2 == -42 # B~E
  79.    
  80.     map_tile_id_0 = map_tile_id_1 if map_tile_id_1 > 0 # 图块A的ID矫正
  81.    
  82.     case map_tile_id_2
  83.     when 1
  84.       # 获取图块A部分的地形标志
  85.       return MAP_TILE_A[map_tile_id_0] if ( (1..256) === map_tile_id_0)
  86.     when 2..256
  87.       # 获取图块B部分的地形标志
  88.       return MAP_TILE_B[map_tile_id_2]
  89.     when 257..512
  90.       # 获取图块C部分的地形标志
  91.       return MAP_TILE_C[map_tile_id_2-256]
  92.     when 513..768
  93.       # 获取图块D部分的地形标志
  94.       return MAP_TILE_D[map_tile_id_2-512]
  95.     when 769..1024
  96.       # 获取图块E部分的地形标志
  97.       return MAP_TILE_E[map_tile_id_2-768]
  98.     else
  99.       # 黑屏区未定义(尚未规划任何)图块区域  回传0
  100.       return 0   
  101.     end
  102.   end  
  103. end
复制代码

范例工程:(V3.0)
http://rpg.blue/upload_program/d/TERENCE_VX_111976575.rar

另P.S.
感谢snstar2006提供美兽写的计算图块ID的脚本
SORRY!!~连帖~我不是故意的

图块编辑器脚本在此:http://rpg.blue/viewthread.php?tid=115381

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

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

2
发表于 2009-1-10 13:40:13 | 只看该作者
return 0 if MAP_TILE_B[map_tile_id_2]==nil
return MAP_TILE_B[map_tile_id_2]
可以縮短成
return MAP_TILE_B[map_tile_id_2] ? MAP_TILE_B[map_tile_id_2] : 0

或著 ==nil 也可以寫成 .nil?


if (map_tile_id_2 >= 257) and (map_tile_id_2 <= 512) d等
可以寫成
if map_tile_id2 / 257 == 0/1/2/3
返回0就是B、返回1就是C....等


還有哈表表的寫法可以改成:
{ 地形標記 => [圖塊ID, 圖塊ID, 圖塊ID, ...]}
這樣設置起來比較方便
方法參考沉影不器的關鍵字變色腳本

PS:
這段計算圖塊ID的腳本是我寫的
美獸寫的我沒找到,寫的可能會更漂亮
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

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

开拓者贵宾

3
发表于 2009-1-10 17:27:58 | 只看该作者
还要注意一件事:A图块里也是有橡皮的
回复 支持 反对

使用道具 举报

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
4
 楼主| 发表于 2009-1-10 19:39:05 | 只看该作者
以下引用snstar2006于2009-1-10 5:40:13的发言:
還有哈表表的寫法可以改成:
{ 地形標記 => [圖塊ID, 圖塊ID, 圖塊ID, ...]}
這樣設置起來比較方便
方法參考沉影不器的關鍵字變色腳本

如此一來
使用者在算地图ID时 很不方便 要从1号数到1千多号
我之所以这样特别把A~E的ID分开
是為了方便  使用者  算地图ID
使用者可以利用简单的乘法与数ˇ数ˋ找出ID值
A~E每个都是从1256
(每張最多32行,所以使用计算复杂度只有8*(二位数))

{ 图块ID=>地形标志值 ,图块ID=>地形标志值 ,.......}
这种使用方法思维设计  类似RM_XP地形标志使用方法
只是图块ID位置要自己找!!

以上是龙仔的狂妄言语......不要PIA我


以下引用精灵使者于2009-1-10 9:27:58的发言:
还要注意一件事:A图块里也是有橡皮的

那个橡皮是可以设置ID的(它是透明的图块)
我說的
黑屏区未定义(尚未规划任何)图块区域  回传0
指的是新建地图时连像皮都没抹过的地方喔!!

此時map_tile_id_0等于-1407
抹了A图块里的橡皮
map_tile_id_0是137

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

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

5
发表于 2009-1-10 19:55:33 | 只看该作者
我觉得直接在脚本中强制限制橡皮元件的地形标记为0就好了


龙黄你误会我的意思了
我不是说一次把全部的元件都设定好
是说这样

A={
1 => [1, 2, 3, 4, 5, 6],
2 => [7, 8, 9, 10],
3 => [],
4 => [11, 12, 23, 56],
5 => [22, 78, 99],
6 => [],
7 => []
}

一样只是要填需要的,只是 1、2、3这些地形标记只要一次

你看一下沉影的关键字变色脚本就明白了
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-5-22
帖子
54
6
发表于 2009-1-10 20:10:47 | 只看该作者
{/fd}显然,tomy的vx地图编辑器自带地形标志扩展功能,
可视化,直观操作
红马尼 強くなりたい 习惯性的上6R……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
7
 楼主| 发表于 2009-1-10 20:13:03 | 只看该作者
以下引用snstar2006于2009-1-10 11:55:33的发言:

我觉得直接在脚本中强制限制橡皮元件的地形标记为0就好了

不設置A橡皮元件就是0
B~E的那个橡皮元件是不能设置成0
如果是这样没模B~E图块的地方 会永远回传0

即使你有設置
# 图块A的部分_ID (ID:1~256)
MAP_TILE_A = {1=>0 ,256=>0......}
也一樣


话说我很想知道那个地图ID你是用甚麼办法做出来的
我曾也 p $game_map.map.data 看过(嘗試過)
但出来的只有一16进制的值而已
完全找不到資料的影子在內


snstar2006
你是怎麼办到的??


另P.S
p这个语法太好用了
脚本有问题时都能用这个在检验何处有问题

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

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

8
发表于 2009-1-10 20:19:06 | 只看该作者
我是看美兽的暂时修改通行的脚本
反向计算得到的

在VX脚本中判断地图通行度的地方也有
那个十六进制是代表通行度,你可以去看F1
p $game_map.map.data 出来的是 data 的在记忆体里面的地址
data 是表格(table) 类



还有,龙黄你误会我的意思了
我不是说一次把全部的元件都设定好
是说这样

A={
1 => [1, 2, 3, 4, 5, 6],
2 => [7, 8, 9, 10],
3 => [],
4 => [11, 12, 23, 56],
5 => [22, 78, 99],
6 => [],
7 => []
}

一样只是要填需要的,只是 1、2、3这些地形标记只要一次

你看一下沉影的关键字变色脚本就明白了



刚才看了一下默认脚本的定义,发现 class Game_Map 那段不用
因为在Game_Map里面本来就有
  1.   #--------------------------------------------------------------------------
  2.   # ● 獲取地圖數據
  3.   #--------------------------------------------------------------------------
  4.   def data
  5.     return @map.data
  6.   end
复制代码

读取的时候用 $game_map.data 代替 $game_map.map.data 就可以了
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
9
 楼主| 发表于 2009-1-10 20:47:38 | 只看该作者
以下引用snstar2006于2009-1-10 12:19:06的发言:
还有,龙黄你误会我的意思了
我不是说一次把全部的元件都设定好
是说这样
A={
1 => [1, 2, 3, 4, 5, 6],
2 => [7, 8, 9, 10],
3 => [],
4 => [11, 12, 23, 56],
5 => [22, 78, 99],
6 => [],
7 => []
}
一样只是要填需要的,只是 1、2、3这些地形标记只要一次
你看一下沉影的关键字变色脚本就明白了

恩~我現在已经知道你的意思了!!
原谅我这只不想再改的懒惰的龙.....


话说只要达到目的就行了(只是方法不同而已)~PIA


以下引用snstar2006于2009-1-10 12:19:06的发言:
在VX脚本中判断地图通行度的地方也有
那个十六进制是代表通行度,你可以去看F1

我家那个F1帮助是日文


以下引用柳无双于2009-1-10 12:10:47的发言:
显然,tomy的vx地图编辑器自带地形标志扩展功能,
可视化,直观操作

不过那套编辑器MS不适合每个用戶的樣子
好像很多人都反应不能使用.......

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

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

10
发表于 2009-1-10 20:55:35 | 只看该作者
我的簽名...裡面有說明檔
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-14 14:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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