- 好友
- 0
- 在线时间
- 1 小时
- 最后登录
- 2024-12-26
贵族[MOD作者]
- UID
- 3154436
- 第纳尔
- 1428
- 精华
- 1
- 互助
- 14
- 荣誉
- 14
- 贡献
- 10
- 魅力
- 134
- 注册时间
- 2020-4-2
鲜花( 40) 鸡蛋( 0)
|
最近被玩家大地图时间流逝时概率很多大量经验的问题困扰了很久。由于该bug的相对随机(即同一个档触发这一bug的时间都完全不同)所以一直找不到原因。在中文站检索相关内容,只发现有一篇2020年帖子反馈了相同的问题,但也许基于制作区过于冷清,该篇帖子也没有相关解决办法。[求助] 有人遇到过大地图上突然获得29999经验的问题么?
因为这个bug过于恶性,让我不得不尝试各种方法尝试去找到它的原因。这耗费了我大量精力,为了避免更多人重复这一毫无意义的过程,随把导致该bug的原因及解决办法分享出来。
问题就出在生成“逃兵”部队的脚本中。可以直接搜索(store_num_parties_of_template, ":num_parties", "pt_deserters"),
如果,mod有添加新的阵营,恰巧没有设置相对应的slot “slot_faction_tier_1_troop” 的值,就会导致该slot默认值为0,也就是玩家自身。然后在生成逃兵部队的过程中,会调用到该slot来获取逃兵士兵,但新阵营没有设置,值为0(玩家),所以该段代码会将玩家添加到 该逃兵部队 中,又因为生成该逃兵部队时,会给予该部队大量的经验,即:(party_upgrade_with_xp, ":new_party", 1000000, 0), 但该部队实际只有玩家一个人,所以经验就全部给了玩家(这里也导致我最开始被误导了,因为经过测试我一直以为这个经验是只给玩家一人,那么就应该是用到add_xp_to_troop方法的地方出了问题,导致浪费了很多时间),似乎上限是29999。这就导致了玩家会在大地图随机的获得29999经验的恶性bug。
(这里吐槽一下官方为什么不在这里添加一个“(gt, ":tier_1_troop", 0),” 让mod作者规避掉这个不好找到的恶性bug)
相关代码:
解决办法:
1.像我上述的,简单粗暴的添加一个条件判断:(gt, ":tier_1_troop", 0),
2.修改(faction_get_slot, ":tier_1_troop", ":faction_no", slot_faction_tier_1_troop), 避免获取到的":tier_1_troop"值为0
|
评分
-
查看全部评分
鲜花鸡蛋幼稚园殺手 在2024-12-6 22:31 送朵鲜花 并说:我非常同意你的观点,送朵鲜花鼓励一下
|