magicskysword / next Goto Github PK
View Code? Open in Web Editor NEW觅长生 Next Mod框架
License: MIT License
觅长生 Next Mod框架
License: MIT License
版本:0.7.3
问题:连续使用startfight指令进行战斗结束的事件跳转时无法正确触发,当第一次战斗胜利后,第二次的战斗在开始时默认胜利,直接触发第二次战斗胜利后的事件,并且由于开始战斗后覆盖掉了第二次战斗时候的对话事件,使得后续事件触发失败。
Originally posted by @2717753650 in #12 (comment)
打了前置mod,但是右上角没有显示出next,其它的mod也不生效。
版本:0.6.4
问题:使用时会出现UI问题,具体表现在显示item列表的框会黑屏,尤其进入物品编辑查看功法书的时候。同时黑屏时无法重新编辑MOD,只有重启游戏这一条路
在本地文件夹下,我创建了一个天赋mod,但是在next的管理器内部没有启动这个mod。这个mod添加了一个ID是3140的天赋。
为了实现另一个mod的功能,我写了一个C# mod,用于使得可消耗的材料允许被右键消耗掉。
后一个Mod在消耗材料的时候报错了。
经过检查错误在GUIPackage.item.realizeSeid4,反编译代码如下:
public void realizeSeid4(int seid)
{
foreach (int num in PlayerEx.Player.SelectTianFuID.ToList())
{
if (CreateAvatarJsonData.DataDict[num].seid.Contains(26))
{
return;
}
}
KBEngine.Avatar avatar = (KBEngine.Avatar)KBEngineApp.app.player();
UIPopTip.Inst.Pop("你的修为提升了" + this.getSeidJson(seid)["value1"].I, PopTipIconType.上箭头);
avatar.addEXP(this.getSeidJson(seid)["value1"].I);
}
把这段代码复制出来使用,经过添加打印查看打印后确认,问题在于:
PlayerEx.Player.SelectTianFuID.ToList()
获取到的天赋包含关闭的mod的天赋3140
但是CreateAvatarJsonData.DataDict[3140]
报错,查找不到对应的项。
next的debug菜单(默认f4呼出)与ConfigurationManager似乎存在冲突;当二者共存时,f4键无法呼出debug窗口,并且启动时debug窗口不弹出。
求助mod框架next无法安装,BepInEx用的是 BepInEx_x86_5.4.5.0.zip 。
非stream版,显示错误:next 0.44 与 BepInEx版本不匹配:
(放入Next 报错)
(不放 不安装Next,则不报错)
在处理Assets图片资源加载时,我看到Next中已经对原版的 ResManager 进行了补丁操作。在调用 "LoadSprite" 以及 "LoadTexture2D" 方法时提供了额外的资源插入操作。那么本质上就不再需要对其他的图片资源加载进行补丁操作了。
但实际上,我发现 Next 之中还是保留有其他时期的资源加载处理的,这本身并没有太大影响,至少对于使用Next编辑器提供的资源加载操作是没有额外影响的。
但实际上我今天在进行自己的Mod制作时,因为特殊需求所有需要自己处理图片资源加载。而我的做法也是直接对 ResManager 中的两个方法进行了额外的处理。这在其他的场景下都是可以正常获取到资源的,但是在进入战斗场景时,我发现战斗面板上的技能图标显示异常。
后续我进行了反复的排查发现,Next中的 SkillIconPatch 中对战斗时的 Skill初始化进行了额外的 patch,使得本来能够通过 ResManager.inst.LoadSprite 加载到的图片数据,因为 Postfix 方法被重新处理了。
Postfix 方法的处理逻辑导致,图片资源会尝试在Next的资源管理中获取数据,如若未获取到对应的资源,则直接加载原版数据,而且是直接通过Resources进行的资源加载。这样的处理方式会使得其他Mod想要进行“特殊的资源加载”变得十分困难。
因此,在这里提出 Issue 希望能将原版资源的加载逻辑进行适当的变动,恢复原版的资源加载方式(如上图)。
另外,为了保险起见我这里也进行了额外的测试,直接拦截了这部分的数据处理逻辑,具体操作如下
而在游戏的实际测试中,我发现直接拦截也不会导致图标加载出现问题(因为本质上已经在 ResManager 中进行过处理了)
所以,是否移除这部分额外的资源加载逻辑也是可行的呢?
涉及到的代码文件如下:
ResManagerLoadSpritePatch
ResManagerLoadTexturePatch
SkillIconPatch
因为我的mod文件夹包含了.gitkeep文件,导致解析出错
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.