关于修改dll实现共享经验和秘籍不减少的方式分享
本帖最后由 YSLP 于 2024-2-16 11:05 编辑共享经验
该方法自己暂时没发现什么bug,但我只玩到第一章不确定后续稳定性。
方法如下:
UIBattleFinish中的show函数将队友的id全部添加到ids中:public override void Show()
{
base.Show();
this.ids.Clear();
IEnumerator<string> enumerator = this.PartyCreationSystem.Player.Members.GetEnumerator();
DataComponentSystem<NpcComponent, NpcItem> system = Game.World.GetSystem<NpcDataSystem>();
while (enumerator.MoveNext())
{
string id = enumerator.Current;
CharacterPropertyInfo characterPropertyInfo = new CharacterPropertyInfo(system);
characterPropertyInfo.Calculate(0);
this.ids.Add(new ValueTuple<string, int>(id, characterPropertyInfo.GetLevel()));
}
int num = Mathf.Min(this.pageCount, this.ids.Count);
for (int i = 0; i < num; i++)
{
WgBattleFinishPortrait wgBattleFinishPortrait = UnityEngine.Object.Instantiate<WgBattleFinishPortrait>(this.portraitPrefab, this.portraitViewport);
wgBattleFinishPortrait.Initialize(this.ids.Item1);
wgBattleFinishPortrait.gameObject.SetActive(true);
}
this.rolePage++;
}
原版代码如下:public override void Show()
{
base.Show();
this.ids.Clear();
foreach (IEntity entity in this.fsm.Controller.Units.Union(this.fsm.Controller.deadUnits))
{
string id = entity.GetComponent<BattleUnit>().Id;
if (this.PartyCreationSystem.Player.Members.Contains(id))
{
BattlePropertyComponent component = entity.GetComponent<BattlePropertyComponent>();
this.ids.Add(new ValueTuple<string, int>(id, component.Level));
}
}
DataComponentSystem<NpcComponent, NpcItem> system = Game.World.GetSystem<NpcDataSystem>();
string text = this.PartyCreationSystem.Player.Members;
CharacterPropertyInfo characterPropertyInfo = new CharacterPropertyInfo(system);
characterPropertyInfo.Calculate(0);
if (this.ids.Count == 0)
{
this.ids.Add(new ValueTuple<string, int>(text, characterPropertyInfo.GetLevel()));
}
int num = Mathf.Min(this.pageCount, this.ids.Count);
for (int i = 0; i < num; i++)
{
WgBattleFinishPortrait wgBattleFinishPortrait = UnityEngine.Object.Instantiate<WgBattleFinishPortrait>(this.portraitPrefab, this.portraitViewport);
wgBattleFinishPortrait.Initialize(this.ids.Item1);
wgBattleFinishPortrait.gameObject.SetActive(true);
}
this.rolePage++;
}
思路是战斗结束添加经验时,会调用ids中的包含的id,通过将所有队友id添加进ids中实现战斗结束后经验共享。=====================================================================
秘籍不减少
参考Heluo.Data.PropsCategory修改Heluo.UI.WGWarehouse的RemoveItem(InventoryData data, int count)
思路是判断为物品类别为秘籍时直接结束函数不进行后续减少数量的操作
我自己实现跳过的代码如下,由于我自己只玩到了第一章暂时不确定后续是否有问题。
PropsCategory[] booktypes = {
PropsCategory.Book,
PropsCategory.HeartFormula,
PropsCategory.FightBook,
PropsCategory.SwordBook,
PropsCategory.BladeBook,
PropsCategory.DaggerBook,
PropsCategory.DartsBook,
PropsCategory.NormalBook};
int id = Array.IndexOf(booktypes, data.Item.SmallCategory);
if (id != -1)
{
return;
}
66666666666 本帖最后由 lineage1119 于 2024-2-7 15:59 编辑
请问是否知道战斗人数上限是在哪个代号底下 lineage1119 发表于 2024-2-7 15:58
请问是否知道战斗人数上限是在哪个代号底下
Heluo.Battle.BattleAreaConfig的StartCharacterCount
YSLP 发表于 2024-2-7 16:21
Heluo.Battle.BattleAreaConfig的StartCharacterCount
感謝分享
大佬~能做个只共享经验的吗? 用什么软件才能打开 看到上面的内容 wh42945291 发表于 2024-2-7 21:42
用什么软件才能打开 看到上面的内容
网上搜dnspy
求教下在哪里改招数上限,找了半天没找到 本帖最后由 lineage1119 于 2024-2-8 10:40 编辑
YSLP 发表于 2024-2-7 21:55
网上搜dnspy
非常讚:) ld133021 发表于 2024-2-8 09:02
求教下在哪里改招数上限,找了半天没找到
你指的是什么上限?装备的招式上限还是可以学习的招式上限。装备上限就6个哪怕改高了,UI显示也还是6个。学习上限我暂时没去研究过不知道哪里改。
public int StartCharacterCount { get; set; } = 8;
请问下为什么改了默认值还是没用,他有读取json表吧,在用的地方改? 冥王的哀伤 发表于 2024-2-8 15:18
public int StartCharacterCount { get; set; } = 8;
请问下为什么改了默认 ...
你要改get方法的返回值,你这样是没用的。
招式栏上限是在dll里面改吗?我现在通过改属性,最多6个,剩下的是不是只能在DLL里面改? 616384756 发表于 2024-2-8 21:09
招式栏上限是在dll里面改吗?我现在通过改属性,最多6个,剩下的是不是只能在DLL里面改? ...
都可以,但主要问题是它UI绘制最多只会出现6个招式栏,改了上限也没有用,如何修改我也没有头绪。得等大佬研究了。
YSLP 发表于 2024-2-9 10:35
都可以,但主要问题是它UI绘制最多只会出现6个招式栏,改了上限也没有用,如何修改我也没有头绪。得等大 ...
感情是UI的问题
我刚试过,秘籍使用的确不会消失,但秘籍也卖不掉了,自己可以无限收钱,就是不会消失。 zxrz2014 发表于 2024-2-11 06:53
我刚试过,秘籍使用的确不会消失,但秘籍也卖不掉了,自己可以无限收钱,就是不会消失。 ...
是的,因为是在移除物品函数里进行修改的,或者考虑参考论坛插件里的代码,在使用秘籍获取招式心法的函数中进行修改。
大佬想请问下,我复制你的代码进去后就会出现错误提示,对比了下发现这个多了个【i】,看了下源文件也有这个,是我的版本不对吗?
本帖最后由 YSLP 于 2024-2-16 11:05 编辑
luwanjing 发表于 2024-2-16 09:14
大佬想请问下,我复制你的代码进去后就会出现错误提示,对比了下发现这个多了个【i】,看了下源文件也有这 ...
就是有[ i ] 的,可能复制的时候出了问题
YSLP 发表于 2024-2-16 11:03
就是有[ i ] 的,可能复制的时候出了问题
搞定了,感谢大佬。
只想找个经验共享的MOD,结果找的各个MOD都附带了一堆功能,只能自己想办法了。还好看到这个帖子了。
zxrz2014 发表于 2024-2-11 06:53
我刚试过,秘籍使用的确不会消失,但秘籍也卖不掉了,自己可以无限收钱,就是不会消失。 ...
如果要能卖掉可以考虑修改MovableItemUI的UseBookConfirm()和UseHeartFormulaConfirm()两个函数里面有一行调用了removeitem函数,可以选择将第二参数设置为0或者直接删去该行,都可以实现心法秘笈不减少。
我用这个 软件dnSpy 打开了GuLong.dll 想修改 制作 增加上场人数和共享经验但是一直没有搞懂怎么修改。论坛上发的 都已经失效了。 感谢分享
感谢分享
感谢分享
感谢分享
感谢分享
wh42945291 发表于 2024-2-23 14:34
我用这个 软件dnSpy 打开了GuLong.dll 想修改 制作 增加上场人数和共享经验但是一直没有搞懂怎么修改 ...
修改因为需要重新编译,你需要根据错误提示将其他需要的dll文件都给打开,那些dll跟gulong.dll在同一个文件夹里。
大佬我只想改出场人数,可以给答案抄吗? qwerdxcvb 发表于 2024-3-2 10:04
大佬我只想改出场人数,可以给答案抄吗?
Heluo.Battle.BattleAreaConfig的StartCharacterCount
大侠,这修改的是那个文件?我想要一个武功心法不减的 原谅我小白没看懂,UIBattleFinish是什么?是个软件还是游戏文件夹里的一个文件? 溪叮咚 发表于 2024-6-1 11:50
原谅我小白没看懂,UIBattleFinish是什么?是个软件还是游戏文件夹里的一个文件? ...
这是修改游戏的dll文件,用dnspy打开对应文件后搜索相关函数修改里面的代码。具体可以参考河洛群侠传那边的帖子,或者你用搜索引擎搜河洛群侠传修改dll应该也有相关教程能找到。
页:
[1]
2