Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
更新日记: Bug写到一半,发现`Klei`推送了更新,过圣诞节了,我的信才写了一半,看来今年是没有人回了,看了一眼订阅量,有大概300块好兄弟取消了订阅,不然就快到2K订阅了,肯定是窝太菜了,反正窝也不care,就是图一乐,听了一会轩子老师的ASMR,想起来`C stack overflow` 可能是之前的方案 `new` 了太多 `newproxy`产生的userdata, 以至于 `Klei`的菜🐔引擎处理不来这么复杂的gc, 现在让这个创建的userdata常驻内存应该就可以完美解决问题, 但是捏还是要得测试才能推送给大家。另外捏,musha的融合双背包问题也有了着落,预计等版本稳定后可以推送更新,大家可以先分开布局将就一下; 以及提到的影甲崩溃的问题,这个等3.1.4版本就可以解决,目测和本次更新需要解决的问题一致; 另外,把护符放在胡须的位置,也就是头顶也是无奈之举,后面可以提供一个开关,如果你不喜欢可以和护甲共享同一个`Animate`位置;
本来想通过Hook整个`EQUIPSLOTS`的metatable来实现统一的白名单列表, 系统性的实现装备系统的映射, 很可惜Klei引擎使用的Lua5.1版本不资瓷 __pairs 元方法, 并且Klei多次使用`pairs(EQUIPSLOTS)`处理整个装备系统, 唯一可行的方案是需要覆盖Lua本身的pairs函数和next函数, 但可能引起新的系统性的bug, 故本重写计划宣告破产; 设计方案(废稿)如下:
```
local function HookEpsImpl()
local _eq = EQUIPSLOTS;
local _mxtable = {
__index = IndexDebug,
__newindex = function (t,k,v) _eq[k] = v end,
__len = function (t) return #_eq end,
__pairs = function (t) return pairs(_eq) end,
__ipairs = function (t) return ipairs(_eq) end,
};
EQUIPSLOTS = {};
setmetatable(EQUIPSLOTS, _mxtable);
print("Set meta table for EQUIPSLOTS");
end
```
之前因为兼容`Musha` 和 `Architect` 不小心把 `HeavyLifting`的 feature给兼容掉了, 顺便一说 `Musha`和`Architect`的作者真的是💩, 喜欢Hook `ACTIONS.PICKUP.fn`,全局判定,拉完就跑,搞偷袭,所以为了避免之前大家穿护甲的状态下捡背包掉线的状况,额外增加了一个强制判定在`HeavyLifting`的兼容层 `caller.name == nil and picker.name ==nil and self.equipslots["body"] == nil`,一定程度上增加了对这类不讲武德的MOD作者的抗性,但是目前副作用未知; 最后啊,以后想做MOD的各位如果觉得,画画图就能搞个好MOD,然后再炒几个好像很火但是也不知道辣鸡不辣鸡的MOD的代码,那你可算找对MOD了,好好看看本MOD的代码,不懂的就来加群细🔒,至少玩家们可以用你的MOD的时候多开点其他省心的MOD,不要学棒子,刀子没几把,整天想搞个大新闻。
正在我为调试无洞穴和一些奇怪的bug,比如烧木甲闪退,带魔光护符掉线等发愁(睡觉)的时候,啪的一下,很快啊,Klei就不知道怎么的修复了我的代码,可能是引擎层面上,大家尽情享用吧,最近一周如果没有bug报告的话,应该就结档了,可能会根据热度和订阅人数做一些定期更新,解锁一些和本MOD无关,但也有些关系(主要原相关MOD做的太拉)的功能;
说好的放假过圣诞节,然后昨天14号就发布暗改更新,还不带公告的那种,改了大部分图层的操作,还给sg的`EventHandler("equip")`加了个写死的`EQUIPSLOTS.BODY`, 导致骑牛搬重物的唱跳rap直接打断施法,好在我防范意识强,被我提前预判抓到了小辫子,在大部分人没发现这个bug的时候就已经采取了修复措施,具体bug是骑牛的状态server和client的Klei辣鸡引擎的内部写法不同,导致人物在`Server`卡`dismounting`状态,但是在`Client`卡`idle`状态,表现就是人物消失动不了,按方向键没有反应; 如果遇到卡住了,可以按 键盘的点 "\`"调出来游戏命令框,在远程(按Control可以切换)输入`ThePlayer.sg:GoToState("idle")`, 人物就会从牛身上下来;
暗改代码是 `SGwilson.lua` 里面第1148行的 `equip`和`unequip`加了写死的`EQUIPSLOTS.BODY`进行强制判断, 导致正常唱跳rape的下牛操作无法执行
具体原理是在不改变原有`SGwilson.lua`的前提下将 `EQUIPSLOTS.BODY` 替换为 `EQUIPSLOTS.BODY`, 那么通过cover关键函数`ins.sg.sg.events.equip.fn`即可轻松秒杀;
先更新一下外围内容,再推送游戏内MOD更新,搞了一晚上,重新在炸栈哥[stackoverflow.com]那里学习了一下Lua的MetaTable机制, 重构了一下`AnimatState`相关HOOK代码:
最后得出结论,Klei其实只在V3.1.6发布前一天出手了,而且是狠狠的出手(骑牛动画bug),并且除此之外,都没有!!!,其实是我没睡好,忘了V3.1.4的时候我临时打了个补丁,限制了魔光护符的行为,至于为什么魔光护符会在无洞穴情况炸档,是因为我设计`AnimatState`的HOOK的时候只考虑了 `OverrideSymbol`, `OverrideItemSkinSymbol`, `ClearOverrideSymbol`这三种情况, 把第二个参数劫持到目标`Symbol`, 然鹅魔光护符会额外调用`SetBloomEffectHandle`以及`ClearBloomEffectHandle`,最终导致覆盖了正确的参数,炸💩了 Klei本就脆弱的引擎;