查看: 2795|回复: 27

[已经解决] 求教下,经常在游戏里第二、三次进入战斗的时候报错

[复制链接]
梦石
0
星屑
2019
在线时间
940 小时
注册时间
2015-10-26
回帖
293

开拓者

发表于 2016-11-1 14:22:00 | 显示全部楼层 |阅读模式

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

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

×
一进战斗就一卡一卡的几下,然后就RGSS3停止工作……这是怎么回事啊

评分

参与人数 1星屑 +50 收起 理由
RaidenInfinity + 50 结帖

查看全部评分

梦石
0
星屑
1297
在线时间
995 小时
注册时间
2014-12-14
回帖
2939

开拓者

发表于 2016-11-9 11:10:17 | 显示全部楼层
本帖最后由 Vortur 于 2016-11-10 02:11 编辑

  

  六楼的坏人已经给出正确答案,此楼对bug的猜测错误。啧...{:2_251:} 在下这次抛了砖引玉,希望下次有良才美玉主动出手。

  不定期贴一下在下的发现和猜测,看看能解决到什么程度吧...
RTAB-CP战斗  使用的类
class Scene_Battle < Scene_Base

class Window_ActorCommand < Window_Command

class Game_Battler < Game_BattlerBase

class Game_Troop < Game_Unit

class Spriteset_Battle

class Sprite_SightShadow < Sprite

class Spriteset_Map




  
视野限制 中的类
class RPG::BaseItem

class Game_Actor

class Sprite_SightShadow < Sprite

class Spriteset_Map



  
Sideview中的类-未完成
class SideView

class Sprite_Weapon < Sprite_Base

class Sprite_Battle_Picture < Sprite

class Sprite_Back_Picture < Plane

class Sprite_Damage < Sprite

class Window_Skill_name < Window_Base

class Spriteset_Sideview

class Sprite_Battle_Back < Plane

class Battle_Camera

class Scene_Battle < Scene_Base

class Game_Battler < Game_BattlerBase

class Game_Actor < Game_Battler

class Game_Enemy < Game_Battler

class Sprite_Base < Sprite

class Sprite_Battler < Sprite_Base

class Spriteset_Battle

class Window_BattleLog < Window_Selectable

class Game_Interpreter






  




16.11.10.15.31

  但是不使用【数据库战斗测试】,即时【main下有脚本】,也不会出现游戏卡死的情况。故下述实验中,只能表明【main下脚本】与【数据库中战斗测试】冲突,并且楼主提出的bug是一种【非必发性的bug】。ORZ...

  不过有一个发现性的发现是:【人物成长曲线与怪物成长曲线搭配不太合适】。人物Lv1的时候,史莱姆几乎无法对玩家造成有效杀伤。但是在人物Lv30的时候,史莱姆约3轮就可将场上玩家杀死。


测试情况如下:

1.  楼主工程中,使用【数据库】的【战斗测试】,在【战斗结束,显示情报画面】处卡死。
2.  单独在新建工程中使用Sideview  与  RTAB-CP战斗,使用【数据库】的【战斗测试】,则不会有此效果。
3.  在楼主工程中,删除所有【main之后的脚本】,使用【数据库】的【战斗测试】,也不会有此效果。
故:Sideview  与  RTAB-CP  不冲突;估计卡死原因系【在main之下插入脚本】所致。
bug示意图:
2.png
理论来自【控制变量法、中值定理】








16.11.9.18.59
  目测是Sideview跟RTAB-CP的冲突,跟视野限制可能没有关系。两者至少都使用了【 Scene_Battle 】这同一个类;重复在插件里定义同一个类应该会导致错误。不清楚“使用插件类覆盖预设类”是怎样做到不出bug的。
  不过sideview还没有找完,尚不明冲突的类都有哪些。而且,也没有使用控制变量法来测试“RTAB-CP战斗,Sideview,视野限制”三者到底是“ab、bc还是ac,亦或是abc”四种情况中的哪一种。今天太晚了,明天使用控制变量法来排错吧!






To 坏人 :
@ RaidenInfinity   

1.  随便你们怎么随时修改版规,反正在下不在乎{:2_272:}
2.  误导是【有意识的】提供错误答案。但本人即使给自己排错,也使用的是同样的方法,所以绝对不是有意识的。而且,你见过哪个坏蛋写这么多认真的话来误导人的?
3.  有时间看在下的答案,怎么不回个贴拨乱反正?{:2_251:}
4.  在下专门照顾那些没人回答的帖子,不给小红花也就罢liao,还处处挤兑在下,太过分啦~~{:2_253:}叫你们的掌柜的来!~

16.11.9before有无更详细的描述...?

  比如插入了何种插件、效果截图等等。还是说【新建一个工程,什么都不改,就会出现这样的错误】啊?

点评

圍觀拋磚大師  发表于 2016-11-10 20:25
日常围观猴戏  发表于 2016-11-10 20:03
擦...没注意。嗯,客气了!在下才疏学浅,瞎忙了半天也没解决问题,十分抱歉!  发表于 2016-11-10 20:03
有时候一玩就出BUG,连续出好多次,有时候试一下午都不出……很怪异的。。不过6楼的大神已经帮忙解决了,也很谢谢你~  发表于 2016-11-10 19:59
原来如此。那此贴的bug,在下再次测试过,但是还是没能发现阁下的报错状况。除了在下【数据库战斗测试】那次之外。能提供一下bug截图吗?  发表于 2016-11-10 19:56

评分

参与人数 1星屑 -1 收起 理由
RaidenInfinity -1 版规b9

查看全部评分

【RMVA教程】
---------------------
欲买桂花同载酒,终不似,少年游.
回复

使用道具 举报

老黄鸡

梦石
4
星屑
45714
在线时间
7951 小时
注册时间
2009-7-6
回帖
13338

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 2016-11-9 13:09:50 | 显示全部楼层
停止工作我感觉就是Sprite泄露了,你使用过哪些脚本贴一下吧。

点评

好像是这个问题,工程http://pan.baidu.com/s/1boAY7BD,我检查了,是RTAB-CP战斗,Sideview,和视野限制这三个脚本的问题,但我不会改……能帮忙改下吗大神  发表于 2016-11-9 17:51
RGDirect - DirectX驱动的RGSS,点我了解.
(排满,暂停)RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

梦石
0
星屑
2019
在线时间
940 小时
注册时间
2015-10-26
回帖
293

开拓者

 楼主| 发表于 2016-11-9 17:52:47 | 显示全部楼层
工程在这里http://pan.baidu.com/s/1boAY7BD,我检查了一下,是RTAB-CP战斗,Sideview,和视野限制这三个脚本的问题,但我不会修……求帮个忙- -
我把这三个脚本去掉就没问题了,但是这三个脚本对我还是比较重要的,毕竟纵版战斗不好看……能帮忙的话十分感谢~!

点评

fux2,我检查过,应该跟视野限制无关,搅合在一起的是RTAB和Sideview,这俩在一起的时候控制台消息就特别多,单独的时候控制台的消息就少一些了。  发表于 2016-11-10 08:44
不要疲劳用眼噢~要劳逸结合!劳逸结合~劳逸结合~  发表于 2016-11-9 19:10
整合三个大型脚本的话,本人就没那么多精力了。  发表于 2016-11-9 19:02
客气了!在下也是一个新手,楼上是真正的大神。在下会看看的。安利一个整理的非常乱的指路贴:http://rm.66rpg.com/forum.php?mod=viewthread&tid=394967  发表于 2016-11-9 18:06
回复

使用道具 举报

梦石
0
星屑
2019
在线时间
940 小时
注册时间
2015-10-26
回帖
293

开拓者

 楼主| 发表于 2016-11-9 20:05:43 | 显示全部楼层
这个跳出不定时出现,有时候2,3次战斗就出来了,有时候一直玩都不出现
回复

使用道具 举报

梦石
0
星屑
6891
在线时间
7027 小时
注册时间
2013-11-2
回帖
1263

开拓者剧作品鉴家

发表于 2016-11-10 19:18:22 | 显示全部楼层
你的脚本的问题是精灵dispose的顺序不正确。精灵(Sprite)在它属于的显示端口(Viewport)之后释放(dispose)的话,有几率造成内存读取错误,而程序崩溃。这是VA程序本身的BUG,至今未修也不会再被修正。因此,能做的只有尽量避免忘记释放精灵,和避免在精灵释放之前释放显示端口。

第一个脚本:视野限制
将153和154行反过来放。
[pre lang="ruby"]  alias tmblsight_spriteset_map_dispose dispose
  def dispose
    dispose_sight_shadow
    tmblsight_spriteset_map_dispose
  end[/pre]

第二个脚本:Sideview
将4821和4822行反过来放。
[pre lang="ruby"]  alias dispose_spriteset_battle_n03 dispose
  def dispose
    @effect_sprites.dispose
    dispose_spriteset_battle_n03
  end[/pre]

第三个脚本: RTAB-CP 战斗
这个脚本的dispose方法有严重缺陷,因为并未使用alias而是用了覆盖的方法,而且释放次序还错误!
这导致SideView所创建的Sprite_Weapon无法被释放,而导致了程序崩溃的问题。
将这个脚本里面的dispose替换成下面这个:
[pre lang="ruby"]
    alias :rtabcp_dispose :dispose
  def dispose
    dispose_rtabcp_gauge
    rtabcp_dispose
  end
[/pre]

就是这样。

评分

参与人数 4星屑 +273 梦石 +1 收起 理由
VIPArcher + 250 + 1 赞用心的回答
OldtreeLethe + 10 塞糖
Vortur + 3 3生万物,聊表敬意
踢腿水上飘 + 10 厉害了word哥!

查看全部评分

回复 1 0

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部