佳丽云

英雄无敌3-WoG中文站

 找回密码
 英雄注册|Register
12
返回列表 发新帖
楼主: hell____fire

拆城及招魂术招鬼魂bug解决思路探讨

[复制链接]
  • TA的每日心情
    开心
    2015-12-9 01:09
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]火元素使者

    1839

    回帖

    8223

    金币

    8

    精华

    版主

    Rank: 10Rank: 10Rank: 10

    积分
    10806

    社区QQ达人

    发表于 2018-4-20 19:20:23 | 显示全部楼层
    拆城后,自己打自己的情况是可以手动避免的,先出城再进城,这个bug紧急度很低啊。

    点评

    确实是可以手动避免的,但不是每个玩家都是对wog熟悉的,这样一旦bug出现会让玩家很困惑。而且一个程序当然是愈完善愈好了:)  详情 回复 发表于 2018-4-21 15:28
  • TA的每日心情
    无聊
    2016-8-14 22:42
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]投石矮人

    353

    回帖

    7029

    金币

    1

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    2052

    退役版主社区QQ达人

     楼主| 发表于 2018-4-21 15:25:18 | 显示全部楼层
    贤知有您 发表于 2018-4-20 18:17
    除了!?GM0,你还要放到!?PI下,后者才是初始化生效的,前面那个是读档生效的。

    ok,谢谢贤知大大,已经搞定!对了之前我说的,将拆城后英雄重新攻占后但未重建的城镇状态变为已被占领,来解决拆城自己打自己的bug,贤知大大你有没有找到解决的办法?我之前在国外论坛上看到一个可以占领风车和磨坊的脚本,我觉得这个应该是可行,因为h3中每个可以访问的物体都对应一个对象,既然风车和磨坊可以改成被占领,那拆城后英雄重新攻占进入的城镇也是对应一个对象的,只要将该对象的属性改为可以占领就行。我这边把那个风车磨坊的脚本发给你参考下
    占领风车磨坊脚本.zip (3.21 KB, 下载次数: 1)
  • TA的每日心情
    无聊
    2016-8-14 22:42
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]投石矮人

    353

    回帖

    7029

    金币

    1

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    2052

    退役版主社区QQ达人

     楼主| 发表于 2018-4-21 15:28:56 | 显示全部楼层
    XEricSin 发表于 2018-4-20 19:20
    拆城后,自己打自己的情况是可以手动避免的,先出城再进城,这个bug紧急度很低啊。

    确实是可以手动避免的,但不是每个玩家都是对wog熟悉的,这样一旦bug出现会让玩家很困惑。而且一个程序当然是愈完善愈好了:)
  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4949

    回帖

    3万

    金币

    35

    精华

    超级版主

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    34677

    论坛守望者论坛元老杰出贡献

    发表于 2018-4-22 00:06:41 来自手机 | 显示全部楼层
    本帖最后由 贤知有您 于 2018-4-22 00:12 编辑

    将拆城后英雄重新攻占后但未重建的城镇状态变为已被占领,来解决拆城自己打自己的bug
    这句没弄懂,因为没测试过,感觉这个过程挺混乱。拆城后城镇一直是无主?英雄触发与自己战斗的根本原因是什么?到底该在什么时刻或者什么触发下才设定为玩家占领?
  • TA的每日心情
    开心
    2020-9-19 16:27
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]火元素使者

    9896

    回帖

    64万

    金币

    19

    精华

    管理员

    风侠

    Rank: 12Rank: 12Rank: 12

    积分
    52326

    论坛元老魅力之星封魔玩家

    发表于 2018-4-22 06:29:46 | 显示全部楼层
    其它英雄访问废墟上的英雄,是否会出现自己跟自己交换的界面?从从而无限刷兵刷宝?我未亲测。

    点评

    风侠大大可以看26楼我的分析,按照解决办法的思路做应该不会再有拆城bug了。  详情 回复 发表于 2018-4-22 21:58
  • TA的每日心情
    无聊
    2016-8-14 22:42
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]投石矮人

    353

    回帖

    7029

    金币

    1

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    2052

    退役版主社区QQ达人

     楼主| 发表于 2018-4-22 21:33:39 | 显示全部楼层
    本帖最后由 hell____fire 于 2018-4-22 22:05 编辑
    贤知有您 发表于 2018-4-22 00:06
    将拆城后英雄重新攻占后但未重建的城镇状态变为已被占领,来解决拆城自己打自己的bug
    这句没弄懂,因为没 ...

    不好意思贤知大大,我可能说得不够清楚,我和你复现下bug的产生过程。
    首先,我们有一座要拆的城镇,这个城镇肯定是我们拥有的,也可以访问 1.jpg
    当我们拆到最后一个建筑后,我们可以看到,这个城镇不属于我们阵营了,然后英雄离开后,这个城镇也无法访问了。 2.jpg
    然后我们等待了一周后,重新去攻占它,又属于我们阵营了,也可以访问。 3.jpg 4.jpg
    之后我们没有重建的话,扔一点兵在城镇上列,退出城镇,系统会提示“有谁愿意流离失所呢?”,然后我们会发现,这个城镇又不属于我们阵营了 5.jpg 6.jpg 。而这个bug就出在这个阶段,如果英雄在城市门口,没有离开,直接按空格,便会产生自己打自己的bug。如果英雄离开城镇再次进入,便不会触发bug,会和留在城镇的部队对打。另外一种触发bug的情况是,拆城完后,英雄仍然留在城镇门口,等城镇内出现部队后,按空格进入也会碰到这个bug。
    我的理解是,
    被拆的城被占领后,如果没有放部队进城镇上列驻扎,游戏中默认为空城,因此不会触发bug;程序逻辑上没有被占领的城市里面有英雄和部队,那必然是守城的英雄和部队。因此放入城镇上列的部队便消失多出了一个一模一样的英雄和原来的英雄对打。因此这个是由于程序逻辑判断出错引发的bug。我觉得理论上有3个解决办法,一个是将这阶段的城镇改为不能访问,要下一天才能访问,这样便无法进入不会产生bug,但这样可能有点困难,而且这样英雄如果留门口,下一天重新按空格键,仍然是会碰到bug;第二个是焦点在英雄上时禁用空格,这样可以完美解决这个bug,而且应该难度不会太高,但这样变成很多空格键可以完成的功能不能用了;第三种就是在拆城的所有阶段把城镇保留在被占领的状态,这样就不会有这个逻辑判断的问题存在。
    我列表如下



    拆到最后一个建筑前
    拆完最后一个建筑后一周内
    重新攻占城镇后
    未重建而离开城镇
    重建以后
    归属
    属于本阵营
    不属于本阵营(建议改成属于本阵营)
    属于本阵营
    不属于本阵营(建议改成属于本阵营)
    属于本阵营
    可否访问
    可以
    不可以
    可以
    可以
    可以




    bug出现区间
    也就是说,bug出现的条件有:城镇不属于本阵营,城镇可以访问,城镇内有部队,并且英雄在门口按空格进入。只要这4个条件都符合那该bug会被触发。“城镇内有部队,并且英雄在门口”这两种情况是既成事实,因此,我们从“城镇不属于本阵营,城镇可以访问,按空格进入”这三点入手,只要破坏一个条件,那bug应该就可以解决。如我之前分析,即使把城镇改为暂时无法访问,如果英雄仍然在门口,等到城镇可以访问后,按空格仍然会碰到bug。因此我建议从城镇的归属和空格键入手去解决这个bug。首选拆城所有阶段城镇保留在被占领(属于本阵营)的状态,如果无法实现就禁用空格键,这样便可以把bug解决。
    当然,因为拆城没有脚本,是硬编码的,对于具体运行逻辑,我可能还没有细化或者深入了解的地方,所以这个判断仍然是一种逻辑上的分析。可惜拆城如果是脚本多好,改就轻松了。
  • TA的每日心情
    无聊
    2016-8-14 22:42
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]投石矮人

    353

    回帖

    7029

    金币

    1

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    2052

    退役版主社区QQ达人

     楼主| 发表于 2018-4-22 21:58:01 | 显示全部楼层
    songfx 发表于 2018-4-22 06:29
    其它英雄访问废墟上的英雄,是否会出现自己跟自己交换的界面?从从而无限刷兵刷宝?我未亲测。

    风侠大大可以看26楼我的分析,按照解决办法的思路做应该不会再有拆城bug了。
  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4949

    回帖

    3万

    金币

    35

    精华

    超级版主

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    34677

    论坛守望者论坛元老杰出贡献

    发表于 2018-4-22 23:25:09 | 显示全部楼层
    这样说我就弄懂这个BUG的关键所在了。问题在于,英雄处于一个非本归属的城镇门口,只要按空格触发战斗(比如城镇内有部队),就会触发自己对战自己的bug。
    BUG的原因是触发战斗时,攻击方是A,检测防守方时获取这个城镇有驻外英雄,将这个英雄作为防守方,结果也是A。一般情况是,英雄不可能处于这个入口处。
    要复现这个BUG很容易,比如地图中带个无主的城镇,有驻守部队,把某英雄HE:P 放到这个城镇的门口。英雄只要空格就能跟自己战斗了。
    下一步倒是要想想能不能解决拆城过程的这个BUG。
    下图是按照我说的复现BUG过程。

    001.jpg

    002.jpg

    003.jpg


    点评

    对的,就是这样 这便是这个bug的运行机制。  详情 回复 发表于 2018-4-23 00:04
  • TA的每日心情
    无聊
    2016-8-14 22:42
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]投石矮人

    353

    回帖

    7029

    金币

    1

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    2052

    退役版主社区QQ达人

     楼主| 发表于 2018-4-23 00:04:11 | 显示全部楼层
    贤知有您 发表于 2018-4-22 23:25
    这样说我就弄懂这个BUG的关键所在了。问题在于,英雄处于一个非本归属的城镇门口,只要按空格触发战斗(比 ...

    对的,就是这样  这便是这个bug的运行机制。

    点评

    第一个bug: 英雄在拆城后,非要站在门口,这没办法破哦. 除非在拆城后,强迫英雄退到旁边的区域(反正不在门口),然后才是系统的关闭城门口(不能访问).这样才能不让英雄进攻里面怪物时出BUG. 第二个bug: 后面可以进  详情 回复 发表于 2018-4-23 17:54
  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4949

    回帖

    3万

    金币

    35

    精华

    超级版主

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    34677

    论坛守望者论坛元老杰出贡献

    发表于 2018-4-23 17:54:49 | 显示全部楼层
    hell____fire 发表于 2018-4-23 00:04
    对的,就是这样  这便是这个bug的运行机制。

    第一个bug:
    英雄在拆城后,非要站在门口,这没办法破哦.
    除非在拆城后,强迫英雄退到旁边的区域(反正不在门口),然后才是系统的关闭城门口(不能访问).这样才能不让英雄进攻里面怪物时出BUG.

    第二个bug:
    后面可以进城后,扔兵出现那个"流离失所" 语句时,这游戏为啥要设定城镇又无主呢?它一定有某个意义(没想明白目的).
    如果不让它变成无主,也不会有后面的BUG吧.

    点评

    所以我的想法就是,要么保持城镇在拆城过程中一直归属于占领方阵营,这点贤知大大可以参考我给你的脚本;要么去掉空格键的功能,当然这样就比较一刀切,或者能否当英雄在城镇门口时,去掉空格键的功能?即,检测英雄  详情 回复 发表于 2018-4-24 10:29
  • TA的每日心情
    无聊
    2016-8-14 22:42
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]投石矮人

    353

    回帖

    7029

    金币

    1

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    2052

    退役版主社区QQ达人

     楼主| 发表于 2018-4-24 10:29:14 | 显示全部楼层
    贤知有您 发表于 2018-4-23 17:54
    第一个bug:
    英雄在拆城后,非要站在门口,这没办法破哦.
    除非在拆城后,强迫英雄退到旁边的区域(反正不在 ...

    所以我的想法就是,要么保持城镇在拆城过程中一直归属于占领方阵营,这点贤知大大可以参考我给你的脚本;要么去掉空格键的功能,当然这样就比较一刀切,或者能否当英雄在城镇门口时,去掉空格键的功能?即,检测英雄如果在城镇门口,当玩家按空格键时无作用不进入城镇或者将空格键改成其他功能(如打开英雄界面)
  • TA的每日心情
    无聊
    2016-8-14 22:42
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]投石矮人

    353

    回帖

    7029

    金币

    1

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    2052

    退役版主社区QQ达人

     楼主| 发表于 2018-4-29 21:51:54 | 显示全部楼层
    我先通过禁用空格解决,各位大大如有更好的思路可以在帖内讨论
    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 英雄注册|Register

    本版积分规则

    捐赠
    关注我们,英3Mod一网打尽!

    WoG中文站 ( 辽B2-20210485-10 )|辽公网安备 21128202000228 号

    GMT+8, 2024-11-15 18:25 , Processed in 0.302766 second(s), 32 queries , Gzip On, File On.

    Powered by Discuz! X3.4

    Copyright © 2004-2022, Beijing Second Sight Technology Co., LTD.

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