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

Project1

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

[已经解决] 从XP向VA移植浮游云(自制特殊交通工具)出错求助

[复制链接]

Lv2.观梦者

梦石
0
星屑
432
在线时间
4175 小时
注册时间
2010-6-26
帖子
6474
跳转到指定楼层
1
发表于 2012-1-26 18:58:48 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 eve592370698 于 2012-1-26 21:22 编辑

先拿出我的文件
http://115.com/file/e7hz4zyv#
DQ地图.rar
其实也可以直接下载那个附件然后覆盖到新建空白工程,然后在数据库里面把要应用浮游云的图块标记为2(可以自己设定,但是很麻烦。)

浮游云(喜欢叫跟斗云也行),是@掣星霁月 在XP系统上制作的一个辅助交通工具,一般在某些洞穴和天上世界,将不可通行的图块用2(可以自己定)来标记,使用时,根据前方的地图标记来激活,只在图块标记为2的地方前进,当前方标记不是2时,如果可以通行就下来正常行走,否则掉头返回。

因为VX ACE不需第三方软件就可以对地图块做标记,于是我试着把这技术移植过来。

该技术是调用公共事件,需要在事件中输入脚本即可,通过检查那些调用方法,并没有看到VA和XP在这些方法的不同点,但是实际运行呢?却出现错误。
因为脚本位于事件中,而非游戏系统脚本内,所以报错地方非常广泛,难以查找,虽然在楼下的帮助下解决了,但是呢?发现那个报错仅仅是接下来一系列问题的开始,
例如即使是循环地图遇到边界还会自动掉头返回。由于本人工程的脚本尚未汉化,实在是找不到地图循环中角色坐标的算法,难以突破地图循环对此交通工具失效的问题。


说句题外话,旧VX可以借助第三方软件给图块标记数字,所以也可以使用浮游云,我移植过考虑到元件限制不实用就放弃了。

截图0001.jpg (231.75 KB, 下载次数: 43)

截图0001.jpg

纠错.jpg (23.69 KB, 下载次数: 45)

纠错.jpg

CommonEvents.rar

1.46 KB, 下载次数: 105

其实是公共事件,用它覆盖即可

点评

大富翁  发表于 2012-1-26 21:20
潜水,专心忙活三次元工作了……

Lv4.逐梦者

梦石
0
星屑
5463
在线时间
2562 小时
注册时间
2011-9-27
帖子
1120

极短23参与开拓者

2
发表于 2012-1-26 20:14:37 | 只看该作者
问题解决了。主要就是你用了个不存在的函数 check_event
VA中对等功能的函数是 event_id_xy.而且如果查找失败后,返回的是0,不是nil。
  1.   @event_over = false
  2. a=$game_map.event_id_xy($xg,$yg)
  3. if a==0
  4.   @event_over = true
  5. elsif $game_map.events[a].through == true
  6.   @event_over = true
  7. end
复制代码
另外,担心envet.through对外不可读,所以加了两行脚本代码。
  1. # 怕鼠的猫
  2. # 修改 Events 类,增加可读变量。
  3. class Game_Event
  4.   attr_reader :through
  5. end
复制代码
目前已经看不到原来的错误了。但是还有隐藏的问题。

http://115.com/file/e7qfdsuz#Dq地图修改1.rar

主要毛病就是用这样的判定方式,如果遇到地图边界,x,y 会可能减成-1,直接导致判断失败而停下来。结果人物被悬浮在半空中。
虽然地图是循环的,可是你的公共事件在判定过程中,没有考虑循环的问题。这个还是你慢慢解决吧。

另外一个小建议,你用的是 获取地形标志 函数。这样浮空云只能在这个地形中漂浮。遇到山川河流都会停下来,主角可能不小心停到山上下不来!?
是不是考虑用下面那个区域ID的函数。这样只要在地图中画一片ID==2的区域,什么地形都可以通行。。。。
只是建议而已。
  1.   #--------------------------------------------------------------------------
  2.   # ● 获取地形标志 ???
  3.   #--------------------------------------------------------------------------
  4.   def terrain_tag(x, y)

  5.   #--------------------------------------------------------------------------
  6.   # ● 获取区域 ID
  7.   #--------------------------------------------------------------------------
  8.   def region_id(x, y)
  9.    
复制代码
反正,交差了,给分啊。

点评

另外原xp的遇到山川河流是掉头返回,并没有像您说的那样停下,难道这是Va判断方法改变吗?  发表于 2012-1-26 20:22
我无语,您该不会是马甲吧?谢谢您指出别的问题,但是我得参考一下别人的回答.  发表于 2012-1-26 20:18
从平淡走向更平淡。
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
432
在线时间
4175 小时
注册时间
2010-6-26
帖子
6474
3
 楼主| 发表于 2012-1-26 21:06:02 | 只看该作者
本帖最后由 eve592370698 于 2012-1-26 21:30 编辑
怕鼠的猫 发表于 2012-1-26 20:14
问题解决了。主要就是你用了个不存在的函数 check_event
VA中对等功能的函数是 event_id_xy.而且如果查找失 ...


首先,对您能够第一时间帮助我并,指出这些bug我表示肯定,但是因为您的回答有些缺陷所以我不能马上给您悬赏。

如果遇到地图边界,x,y 会可能减成-1,直接导致判断失败而停下来。结果人物被悬浮在半空中。
虽然地图是循环的,可是你的公共事件在判定过程中,没有考虑循环的问题。

遇到山川河流都会停下来,主角可能不小心停到山上下不来!?
经过测试,到了边界之后和不可通行的区域之后,直接原路返回。

这个还是你慢慢解决吧。
反正,交差了,给分啊。
考虑到您的VIP不多,本想认可您,但是经过测试,发现这仅仅是一系列bug的开始,所以我怀疑您帮我解答太急于想要得到奖赏,没准马马虎虎应付,所以提高悬赏并将问题做了局部修改。

点评

请指定标准答案  发表于 2012-1-26 22:42
其实我觉得那位同学改了一下好像快解决了,汗。  发表于 2012-1-26 21:46
+1  发表于 2012-1-26 21:20
为防止通货膨胀,柳大已插手解决  发表于 2012-1-26 21:19
潜水,专心忙活三次元工作了……
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5463
在线时间
2562 小时
注册时间
2011-9-27
帖子
1120

极短23参与开拓者

4
发表于 2012-1-26 21:38:18 | 只看该作者
本帖最后由 怕鼠的猫 于 2012-1-26 21:49 编辑

你原本的事件脚本太长,具有移植脚本天生的遗传缺陷。如果要修改到能用的程度,需要在所有x,y增减的地方加入修正函数。
从字面上看,你要排除的只是那个 错误提示对话框,所以我就头疼医头,不管脚气了。

你要交通工具具有直线前进,不能人工干涉的特点,这一点和我以前做的游戏有类似的地方。那个游戏中,人物是在冰面上滑行的。
我可以改造一下那个游戏的片段,用我自己的风格来解决这个问题。
http://115.com/file/ans9513z#Dq地图修改2.rar

点评

柳大人开始介入这个问题,那我也不知道怎么说才好。不能部分认可,所以只有转账了。就这一次机会,如果问题不能完美解决我是不会认可的。  发表于 2012-1-26 21:51
您的积极帮忙我考虑到您很想升级,已经给您转账了一点。但是您前面提到的那些bug我的技术没有,您设计的“跟斗云”反而有了,真是难为您了。  发表于 2012-1-26 21:47
从平淡走向更平淡。
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

5
发表于 2012-1-26 21:46:57 | 只看该作者
本帖最后由 亿万星辰 于 2012-1-26 23:39 编辑
  1. @event_over = false
  2. a=$game_map.events_xy_nt($xg,$yg)
  3. if a.empty?
  4.   @event_over = true
  5. end
复制代码
放在哪里你知道的。现在存在的问题是,到达目的地后,队伍集结的动作有点蹊跷~还有就是公共事件里没有对云彩的数量做处理。
@eve592370698

其实实现起来不用这么繁琐……虽然原理上差不多。

1、
  1. case $game_player.direction
  2. when 2
  3. @cloudy+=1
  4. when 4
  5. @cloudx-=1
  6. when 6
  7. @cloudx+=1
  8. when 8
  9. @cloudy-=1
  10. end
复制代码

2、
  1. case $game_player.direction
  2. when 2
  3.   $yg += 1
  4. when 4
  5.   $xg -= 1
  6. when 6
  7.   $xg += 1
  8. when 8
  9.   $yg -= 1
  10. end
复制代码
这里两部分是存在问题的,会有坐标越界的情况,可以用条件分歧增加一个对地图是否是循环地图的判断,如下:
1、
条件分歧:脚本:$game_map.overworld?
  脚本:
  1. case $game_player.direction
  2. when 2
  3. @cloudy+=1;@cloudy%=$game_map.height
  4. when 4
  5. @cloudx-=1;@cloudx%=$game_map.width
  6. when 6
  7. @cloudx+=1;@cloudx%=$game_map.width
  8. when 8
  9. @cloudy-=1;@cloudy%=$game_map.height
  10. end
复制代码
否则
  脚本:
  1. case $game_player.direction
  2. when 2
  3. @cloudy+=1
  4. when 4
  5. @cloudx-=1
  6. when 6
  7. @cloudx+=1
  8. when 8
  9. @cloudy-=1
  10. end
复制代码
结束

2、
条件分歧:脚本:$game_map.overworld?
  脚本:
  1. case $game_player.direction
  2. when 2
  3.   $yg += 1;$yg%=$game_map.height
  4. when 4
  5.   $xg -= 1;$xg%=$game_map.width
  6. when 6
  7.   $xg += 1;$xg%=$game_map.width
  8. when 8
  9.   $yg -= 1;$yg%=$game_map.height
  10. end
复制代码
否则
  脚本:
  1. case $game_player.direction
  2. when 2
  3.   $yg += 1
  4. when 4
  5.   $xg -= 1
  6. when 6
  7.   $xg += 1
  8. when 8
  9.   $yg -= 1
  10. end
复制代码
结束

点评

因为用半角的小数点调用方法我还是脑袋空空,不会弄,特别是调用方法后面再加上半角?等我就更不懂了。  发表于 2012-1-26 22:30
谢谢了。看来难免会有人争悬赏了。  发表于 2012-1-26 22:29
来看追加~  发表于 2012-1-26 22:22
目前柳万岁爷开始介入,我只能慢慢等待别人的答复。 当然,您能指出来我很高兴,谢了。  发表于 2012-1-26 21:57
地图循环功能失效。关键是对未汉化脚本地毯式搜索我已经眼花了。VA的队友集合功能不知道为啥在下浮游云的时候失效了,使用集合队友并等待还不行  发表于 2012-1-26 21:55
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5463
在线时间
2562 小时
注册时间
2011-9-27
帖子
1120

极短23参与开拓者

6
发表于 2012-1-26 22:15:49 | 只看该作者
本帖最后由 怕鼠的猫 于 2012-1-26 23:19 编辑

修正完毕。这回应该能满意了。

http://115.com/file/bepw8d0e#Dq地图修改3.rar
在事件中穿插脚本真不方便,只有那么几行而已。写得累得慌。

本 奸商 从来都是做良心买卖,童叟无欺!欢迎下次惠顾!
  1. @mapheight=$game_map.height
  2. @mapwidth=$game_map.width
复制代码
最前面的两句应该这样改动一下,免得换了地图就不对劲。

点评

谢谢合作  发表于 2012-1-27 10:56
另外楼上亿万星辰的答复我怎么也不可能对他视而不见吧?前面版主都告诉我了为防止“通货膨胀”柳万岁爷开始介入,所以说等过几天看看大家对您  发表于 2012-1-26 22:39
万毛,我是来打酱油的= =b  发表于 2012-1-26 22:39
悬赏是不能收回去的!如果选择无满意答案,那悬赏自然就打水漂了。另外即使能收回我也不收,因为那样等于用高额悬赏吸引人然后放鸽子……  发表于 2012-1-26 22:38
这两句还要改动的,要在不同的地图上赋给不同的值。 柳大在这里,悬赏收回去有什么难?  发表于 2012-1-26 22:30

评分

参与人数 1星屑 +900 收起 理由
eve592370698 + 900 辛苦了。

查看全部评分

从平淡走向更平淡。
回复

使用道具 举报

Lv1.梦旅人

66RPG站长

梦石
0
星屑
54
在线时间
615 小时
注册时间
2005-10-10
帖子
5734

RMVX自由创作大赛亚军第2届短篇游戏比赛亚军第5届短篇游戏比赛冠军

7
发表于 2012-1-26 22:37:33 | 只看该作者
好像楼上改的那个解决差不多了
集结的那个问题,把Game_Interpreter的def command_217最上面加一行:
  1. $game_player.followers.synchronize($game_player.x, $game_player.y, $game_player.direction) unless $game_player.followers.visible
复制代码
就行了。默认只有在角色可见时候才能执行集结,调整一下改为不可见时刹那集结就好了。闪人~

点评

说下思路呗~  发表于 2012-1-26 23:36
……其实我之前还写了个2B的做法。不太好意思说。我觉得这玩意其实是VA一bug  发表于 2012-1-26 22:54
赞66~  发表于 2012-1-26 22:43
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
432
在线时间
4175 小时
注册时间
2010-6-26
帖子
6474
8
 楼主| 发表于 2012-1-26 22:44:49 | 只看该作者
本帖最后由 eve592370698 于 2012-1-26 23:03 编辑
怕鼠的猫 发表于 2012-1-26 22:15
修正完毕。这回应该能满意了。

http://115.com/file/bepw8d0e#Dq地图修改3.rar


您楼上的亿万星辰和您楼下的柳万岁爷也有很大的功劳,
柳万岁爷应该获得3个VIP,亿万星辰的技术含量很高,应该获得33个。

点评

谢谢合作  发表于 2012-1-27 10:56
行了,转账成功!  发表于 2012-1-26 23:33
我对论坛功能不太熟悉,这个“评分”也只能送120经验。怎么转账VIP啊?  发表于 2012-1-26 23:28
请标明转账金额  发表于 2012-1-26 23:01
潜水,专心忙活三次元工作了……
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 04:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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