Project1
标题:
如何改变主角所在位置的图块?
[打印本页]
作者:
牛肉面
时间:
2009-10-17 13:59
标题:
如何改变主角所在位置的图块?
本帖最后由 牛肉面 于 2009-10-17 14:00 编辑
如何改变主角所在位置的图块?
比如用事件把角色脚下的草地改成平地这样……不能用创造事件怎么弄
是真正的改变图块啊,只是用事件制定把主角位置(变量X,变量Y)的图块变成另外一个……
就是主角站的位置本来是草地,执行一个事件,变成土路这样…… (不能创造一个事件,因为事件太多会很卡)
我地面是画在第一层的!
作者:
后知后觉
时间:
2009-10-17 13:59
本帖最后由 后知后觉 于 2009-10-17 16:32 编辑
把下面这段脚本插到Main前
在事件中调用脚本
$game_map.hzhj(地图元件编号, 元件层数-1)
这个地图元件编号我要说一下
在RMXP界面里左上方就是图块的图形
这个里面的最上面的第一行是自动元件 对吧!
从第2行开始才是图块文件的内容
那么第2行的第一个元件的编号是384
第2行的第2个元件编号就是385
第2行的第3个元件就是386
这样以此类推
第3行的第一个元件编号就是392
第4行第一个就是400.......
附带工程一个
运行时更改地图元件.rar
(190.35 KB, 下载次数: 440)
2009-10-17 16:32 上传
点击文件名下载附件
至于获取自动元件的编号
先在地图上放上自动元件
然后开个事件输入脚本
p $game_map.data[X坐标, Y坐标, 所在的层数-1]
所在的层数-1 就是说 第一层的话要输入为0
第二层的话要输入为1...第三层的话要输入为2
#==============================================================================
# ■ Game_System
#==============================================================================
class Game_System
attr_accessor :hzhj_map
alias hzhj_sys_ini initialize
def initialize
@hzhj_map = {}
hzhj_sys_ini
end
end
#==============================================================================
# ■ Game_Map
#==============================================================================
class Game_Map
alias hzhj_setup_map setup
def setup(map_id)
hzhj_setup_map(map_id)
if $game_system.hzhj_map[@map_id] != nil
for a in $game_system.hzhj_map[@map_id]
@map.data[a[0],a[1],a[2]] = a[3]
end
end
end
def data=(new_data)
@map.data = new_data
return @map
end
def hzhj(c, f = 0)
a = $game_player.x;b = $game_player.y
d = [];d.push(a);d.push(b);d.push(f)
d.push(c)
e = $game_map.map_id
if $game_system.hzhj_map[e] == nil
$game_system.hzhj_map[e] = []
$game_system.hzhj_map[e].push(d)
else
$game_system.hzhj_map[e].push(d)
end
$game_map.data[a,b,f] = c
end
end
#==============================================================================
# ■ Spriteset_Map
#==============================================================================
class Spriteset_Map
alias hzhj_spri_map_upd update
def update
if @tilemap.map_data != $game_map.data
@tilemap.map_data = $game_map.data
end
hzhj_spri_map_upd
end
end
复制代码
作者:
霜冻之狼
时间:
2009-10-17 16:07
本帖最后由 霜冻之狼 于 2009-10-17 16:09 编辑
其实LS不用这么麻烦……
http://rpg.blue/viewthread.php?tid=131802
ps:最后不要忘了刷新下地图
作者:
后知后觉
时间:
2009-10-17 16:35
本帖最后由 后知后觉 于 2009-10-17 16:38 编辑
你那个帖子里说的只是基础
那样直接改了的话 换个地图又或者是存档再读档又回复原来的样子了
如果去修改Map.rxdata的话
那就是说这是个一次性游戏
第2+N次开始新游戏的话就是改过以后的样子了
所以只有拿东西来记录一下然后存到存档里去
作者:
牛肉面
时间:
2009-10-17 16:38
啊,太感谢了!!!
怎么把悬赏分给你呢?
作者:
后知后觉
时间:
2009-10-17 16:39
你自己先试试看找找有没有BUG再说吧
作者:
牛肉面
时间:
2009-10-17 16:39
对了,这个如果切换地图或者存取档案会不会恢复呢?
作者:
后知后觉
时间:
2009-10-17 16:50
不会
作者:
牛肉面
时间:
2009-10-17 16:54
太好了! 我在测试一会,然后把分给你!
作者:
boss870331
时间:
2009-10-17 20:52
谢谢大大!!顶一个!
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1