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

Project1

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

伪●破除地图999张的限制(跨越目录法)--更新范例工程

 关闭 [复制链接]

Lv1.梦旅人

龙皇

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

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

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

x
{/hx}首先要感谢
wy29禾西冰水沉影不器4人在
[讨论]如何破除地图999张的限制帖子中
http://rpg.blue/viewthread.php?tid=83080&page=1
提供资讯(或思路),我才能发出这样的教程!



在RMXP编辑器中限制了地图制作的张数!
虽然制作地图超过999张对一般人来说不太可能,
但我还是说明一下:万一超过999张该如何扩充制作地图?

首先我们先必须知道在地图做编辑时(存档后),
会在工程的Data资料夹下产生
Map001.rxdata ,Map002.rxdata ,Map003.rxdata....Map***.rxdata
再由Game_Map脚本中的
@map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))
(其中%03d表示地图最大ID为3位数)
载入地图档案。

在RMXP编辑器中地图最大ID量默认是3位数的,应该破解编制器,把编号改成4位数
(並把Game_Map脚本中的%03d改成%04d),但是要破解编制器不容易,所以我们可以
利用脚本从不同的文件夹内(不同的路径)读取新地图DATA。

首先新建立N个Data资料夹(Data1,Data2,.....DataN)
再利用游戏某变量 $game_variables[变量编号]=数值 控制
把Game_Map类里@map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))
改成
(这里以游戏变量编号2为例)

  1. case $game_variables[2]
  2. when 0
  3.   @map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))
  4. when 1
  5.   @map = load_data(sprintf("Data1/Map%03d.rxdata", @map_id))
  6. when 2
  7.   @map = load_data(sprintf("Data2/Map%03d.rxdata", @map_id))
  8. .........
  9. when [b]N[/b]
  10.   @map = load_data(sprintf("Data[b]N[/b]/Map%03d.rxdata", @map_id))
  11. end
复制代码
这样基本上 伪●破除地图999张的限制 已经完成了!

接下来要介绍:应该要如何编辑新的地图
当制作地图超过999张(该999张地图Data都存放在Data资料夹下),
新的工程开始制作新地图,做完后存档,
再把新的地图Data复制到以前的工程Data1资料夹下,
依此类推.......
但当然制作新的工程过程中必须注意:
事件里如果要用到其他数据那得确保所有数据编号跟以前的工程一致
像开关ID,Tilesets ID,变量ID..等等 要跟以前的工程配合才行!
所以我建议:
先把旧工程复制一份当新的工程用,再把复制的那一份(当新的工程用的那一份)里的地图
999张全部删除,再重新制作新的地图。
这样一来编辑不容易出错,
二来要添加开关,变数,图块Tilesets,..等等容易同步添加

最后要介绍的是:应该要如何跨越目录做地图场所移动
先使用游戏某变量 $game_variables[变量编号]=数值 控制帶入你要的Data资料夹数值,
然後跨越目录做地图场所移动前必须$game_map = Game_Map.new重新讀取
最后再利用变数指定场所移动的 (新目录下)目的地

在事件頁编辑后如下:

但如果是在对话完结束后要跨越目录地图场所移动时,至少要等待5桢以上
否则会出现以下错误:

对话完结束后正確事件頁编辑要如下所示:

范例工程:
主工程(195KB)
http://rpg.blue/upload_program/f ... MAP999_88365305.rar
子工程(189KB)
http://rpg.blue/upload_program/files/子工程_88365344.rar
(至目前为止这种方法还没有发现错误,如果范例工程有发现错误请告知,谢谢。)
补充:
范例工程中使用了地图显示名称的脚本,这个脚本也是要做小修改的,道理跟这个类似,
只是这次换成只有一个的MapInfos.rxdata了,自己看看哪里做了修改吧!!


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

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
25
 楼主| 发表于 2008-5-28 08:41:34 | 只看该作者
哇~~好一个老旧的东西,我还以為不会发布了呢!
感謝禾西!

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

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
975
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

24
发表于 2008-5-28 08:21:07 | 只看该作者
發布完成!
TERENCE.VIP += 1
{/hx}
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
23
 楼主| 发表于 2008-4-19 02:48:22 | 只看该作者
以下引用鸿剑于2008-4-18 18:18:05的发言:

TERRENCE你的RPG制作大师XP是英特卫正版的吧?

你~~~
你怎么.....知道我是......
我的身分被拆穿了.........
{/bz}

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

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
975
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

22
发表于 2008-4-15 05:23:25 | 只看该作者
以下引用TERENCE于2008-4-14 17:17:36的发言:
我知道~~~~
但如果这篇教程我 照你的方法写 我就不是把你的方法给抄出来??
禾西的想法变成 我的原创东西发布,不就.......
所以我还是采用我那个笨方法发布出来,才不会抄袭禾西的想法。
因为当初 破除地图999张的方法 最早想出来的笨方法就是我吧~~~~~
这笨方法才是我的原创发布!!

不用那麽拘泥==
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
21
 楼主| 发表于 2008-4-15 04:55:27 | 只看该作者
以下引用火鸡三毛老大于2008-4-14 20:34:54的发言:

这个 ..
要没有任何问题才能发正式版的游戏吧...

我的方法也是可以的~~~~只是比较笨而已~~~~
不过話說我真不太習慣用增加參數的方法
{/yun}

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

使用道具 举报

Lv1.梦旅人

很傻很天真

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-13
帖子
3667
20
发表于 2008-4-15 04:34:54 | 只看该作者
这个 ..
要没有任何问题才能发正式版的游戏吧...
回复 支持 反对

使用道具 举报

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
19
 楼主| 发表于 2008-4-15 01:17:36 | 只看该作者
以下引用禾西于2008-4-14 9:23:31的发言:

我記得上次說過,在initialize那裏增加參數比之用變量控制來得容易。

def initialize(num=1)
@num = num
。。。。
end


然後只需要改

@map = load_data(sprintf("Data#{@num}/Map%03d.rxdata",@map_id)


在事件當中調用只要寫:
$game_map = Game_Map.new(num)
就可以了==

我知道~~~~
但如果这篇教程我 照你的方法写 我就不是把你的方法给抄出来??
禾西的想法变成 我的原创东西发布,不就.......
所以我还是采用我那个笨方法发布出来,才不会抄袭禾西的想法。
因为当初 破除地图999张的方法 最早想出来的笨方法就是我吧~~~~~
这笨方法才是我的原创发布!!
{/wx}

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

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
975
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

18
发表于 2008-4-14 17:23:31 | 只看该作者
我記得上次說過,在initialize那裏增加參數比之用變量控制來得容易。
def initialize(num=1)
  @num = num
  。。。。
end

然後只需要改
@map = load_data(sprintf("Data#{@num}/Map%03d.rxdata",@map_id)


在事件當中調用只要寫:
$game_map = Game_Map.new(num)
就可以了==
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-2-25
帖子
32
17
发表于 2008-4-14 16:59:23 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-20 22:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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