Project1
标题:
求教下,经常在游戏里第二、三次进入战斗的时候报错
[打印本页]
作者:
踢腿水上飘
时间:
2016-11-1 14:22
标题:
求教下,经常在游戏里第二、三次进入战斗的时候报错
一进战斗就一卡一卡的几下,然后就RGSS3停止工作……这是怎么回事啊
作者:
Vortur
时间:
2016-11-9 11:10
本帖最后由 Vortur 于 2016-11-10 02:11 编辑
六楼的坏人已经给出正确答案,此楼对bug的猜测错误。啧...{:2_251:} 在下这次抛了砖引玉,希望下次有良才美玉主动出手。
不定期贴一下在下的发现和猜测,看看能解决到什么程度吧...
[fold= 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
[/fold][fold=视野限制 中的类]
class RPG::BaseItem
class Game_Actor
class Sprite_SightShadow < Sprite
class Spriteset_Map
[/fold][fold=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
[/fold]
[fold=16.11.10.15.31]
但是不使用【数据库战斗测试】,即时【main下有脚本】,也不会出现游戏卡死的情况。故下述实验中,只能表明【main下脚本】与【数据库中战斗测试】冲突,并且楼主提出的bug是一种【非必发性的bug】。ORZ...
不过有一个发现性的发现是:【人物成长曲线与怪物成长曲线搭配不太合适】。人物Lv1的时候,史莱姆几乎无法对玩家造成有效杀伤。但是在人物Lv30的时候,史莱姆约3轮就可将场上玩家杀死。
[line]0[/line]测试情况如下:
1. 楼主工程中,使用【数据库】的【战斗测试】,在【战斗结束,显示情报画面】处卡死。
2. 单独在新建工程中使用Sideview 与 RTAB-CP战斗,使用【数据库】的【战斗测试】,则不会有此效果。
3. 在楼主工程中,删除所有【main之后的脚本】,使用【数据库】的【战斗测试】,也不会有此效果。
故:Sideview 与 RTAB-CP 不冲突;估计卡死原因系【在main之下插入脚本】所致。
bug示意图:
(, 下载次数: 0)
上传
点击文件名下载附件
理论来自
【控制变量法、中值定理】
[/fold][fold=16.11.9.18.59]
目测是Sideview跟RTAB-CP的冲突,跟视野限制可能没有关系。两者至少都使用了【 Scene_Battle 】这同一个类;重复在插件里定义同一个类应该会导致错误。不清楚“使用插件类覆盖预设类”是怎样做到不出bug的。
不过sideview还没有找完,尚不明冲突的类都有哪些。而且,也没有使用控制变量法来测试“RTAB-CP战斗,Sideview,视野限制”三者到底是“ab、bc还是ac,亦或是abc”四种情况中的哪一种。今天太晚了,明天使用控制变量法来排错吧!
[/fold]
[line]3[/line]To 坏人 :
@ RaidenInfinity
1. 随便你们怎么随时修改版规,反正在下不在乎{:2_272:}
2. 误导是【有意识的】提供错误答案。但本人即使给自己排错,也使用的是同样的方法,所以绝对不是有意识的。而且,你见过哪个坏蛋写这么多认真的话来误导人的?
3. 有时间看在下的答案,怎么不回个贴拨乱反正?{:2_251:}
4. 在下专门照顾那些没人回答的帖子,不给小红花也就罢liao,还处处挤兑在下,太过分啦~~{:2_253:}叫你们的掌柜的来!~
[line]3[/line][fold=16.11.9before]有无更详细的描述...?
比如插入了何种插件、效果截图等等。还是说【新建一个工程,什么都不改,就会出现这样的错误】啊?[/fold]
作者:
fux2
时间:
2016-11-9 13:09
停止工作我感觉就是Sprite泄露了,你使用过哪些脚本贴一下吧。
作者:
踢腿水上飘
时间:
2016-11-9 17:52
工程在这里
http://pan.baidu.com/s/1boAY7BD
,我检查了一下,是RTAB-CP战斗,Sideview,和视野限制这三个脚本的问题,但我不会修……求帮个忙- -
我把这三个脚本去掉就没问题了,但是这三个脚本对我还是比较重要的,毕竟纵版战斗不好看……能帮忙的话十分感谢~!
作者:
踢腿水上飘
时间:
2016-11-9 20:05
这个跳出不定时出现,有时候2,3次战斗就出来了,有时候一直玩都不出现
作者:
RaidenInfinity
时间:
2016-11-10 19:18
你的脚本的问题是精灵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]
就是这样。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X5.0