楼主: 仙居剑客
收起左侧

[魔法战斗] 【原创】简单的NPC等级重塑(SSEEDIT脚本)(2021.8.27更新4.0)

[复制链接]

20

主题

1235

帖子

14万

积分

玖大猫MOD汉化组

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

点赞
467
贡献
382
猫币
21
精华
0
金元
135283
积分
143298
发表于 2021-10-31 18:17:18 | 显示全部楼层
仙居剑客 发表于 2021-8-26 21:19
我会考虑增加一个所有NPC无上限的版本,不过要忠实还原原版游戏NPC的强弱,需要想出一个新的算式。如果不 ...

楼主太喜欢你这个脚本啦~能否把类似相关的问题做成Q&A放在帖子里以供查阅呀~
以及,能否给出一个对脚本的详细解释呀,这样我们自己就可以按自己的需要来修改了!
回复

使用道具 举报

20

主题

1235

帖子

14万

积分

玖大猫MOD汉化组

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

点赞
467
贡献
382
猫币
21
精华
0
金元
135283
积分
143298
发表于 2021-10-31 18:32:49 | 显示全部楼层
之前我都是自己一个一个手动改,太头疼了...
回复

使用道具 举报

25

主题

1239

帖子

5万

积分

游戏VIP联动部

Rank: 16Rank: 16Rank: 16Rank: 16

点赞
760
贡献
615
猫币
57
精华
0
金元
34597
积分
52161
 楼主| 发表于 2021-11-1 15:21:02 | 显示全部楼层
应求放一个代码说明,其实一开始就想放在脚本注释中来着,结果发现注释中有中文会造成脚本运行错误

DiffMult := 5.0;  
//难度系数

PCLevel := 81;       
//原游戏PC能达到的最高等级(忽略传奇技能)       

iOldLevel := GetElementNativeValues(e, 'ACBS\Level');  
//获取该NPC原等级


//**************************对原版固定等级NPC进行预处理***************************************//

iPLM := GetElementNativeValues(e, 'ACBS\Flags\PC Level Mult');  
//该NPC是否随PC提升等级,1为是,0为否
       
if (iPLM = '0') then       
    SetElementNativeValues(e, 'ACBS\Flags', GetElementNativeValues(e, 'ACBS\Flags') or 128);  
if (iPLM = '0') then       
    SetElementNativeValues(e, 'ACBS\Calc min level', (iOldLevel));
if (iPLM = '0') then
    SetElementNativeValues(e, 'ACBS\Calc max level', (iOldLevel));
if (iPLM = '0') then
    SetElementNativeValues(e, 'ACBS\level Mult', 1000);  
//如iPLM为0则为其添加“PC Level Mult”的flag,并将原等级作为新最小、最大等级,level Mult设为1000(1000即与PC等级比为1:1)

//**************************对原版固定等级NPC预处理完毕***************************************//


iLevelMult := GetElementNativeValues(e, 'ACBS\Level Mult');       
iMinLevel := GetElementNativeValues(e, 'ACBS\Calc min level');            
iMaxLevel := GetElementNativeValues(e, 'ACBS\Calc max level');
//对处理完毕后均已随PC等级提升的NPC,获取原等级比率、最小、最大等级

if (iMaxLevel = '0') then
    SetElementNativeValues(e, 'ACBS\Calc max level', 81 * iLevelMult / 1000);
//一个特例,对原版最大等级设为0的NPC,将“81 * iLevelMult / 1000”设为他的最大等级,即原版该NPC理论上可以升到的最大等级

iMaxLevel := GetElementNativeValues(e, 'ACBS\Calc max level');
//重新获取最大等级


//**************************开始计算最大等级***************************************//
          
iNewMaxLevel := iMaxLevel * ( ( Power(0.99,iMaxLevel) ) * ( DiffMult - 1 ) + 1 );
//按照公式计算新的最大等级(注:“Power(a,b)”即a的b次方 )
//该公式中,系数“ ( Power(0.99,iMaxLevel) ) * ( DiffMult - 1 ) + 1”随着iMaxLevel增大而无限趋近于1,即,原最大等级越大,计算出的新最大等级越接近于原最大等级
//这是因为一些mod中的boss原本的等级就已经足够高(如警戒者),这样做可以有效平衡NPC之间的强弱
       
if (iNewMaxLevel < iMaxLevel) then
    iNewMaxLevel := iMaxLevel;
//限制条件,计算出的新最大等级不能比原最大等级小,否则不做改变
                          
if (iNewMaxLevel > 65535) then
    iNewMaxLevel := 65535;       
//限制条件,计算出的新最大等级不能超过65535,否则等于65535

SetElementNativeValues(e, 'ACBS\Calc max level', (iNewMaxLevel));

//**************************最大等级计算完毕***************************************//


//**************************开始计算等级比率***************************************//

//iNewLevelMult := ( iNewMaxLevel / PCLevel ) * iLevelMult;
//通过将该NPC最大等级与PCLevel作比得出新等级比率,简单粗暴,已弃用,放在这里只是方便理解下面的公式
               
iNewLevelMult := ( ( -1 * iNewMaxLevel / ( PCLevel * Power ( iMaxLevel , 2 ) ) ) * Power( iMinLevel , 2 ) + ( 2 * iNewMaxLevel / ( iMaxLevel * PCLevel ) ) * iMinLevel ) * iLevelMult;
//按照公式计算出新的等级比率,该公式将NPC原始的最小等级(iMinLevel)、最大等级(iMaxLevel)作为参数引入。
//该公式的特征为:
//1. 结果随原等级比率(iLevelMult)递增,使其可以反映NPC原始设定强度;
//2. iMinLevel与iMaxLevel越接近,结果越趋近于“iNewMaxLevel / PCLevel”,这使得最大等级相同的NPC,最小等级越大,等级比率越高,但它们最终达到的等级依然一致,可以较好地保留原始设定中,NPC之间一定时期内的相对强弱。
//为了实现特征2,该公式的系数(“iLevelMult”前面的部分)实际上是一个关于iMinLevel,以(iMaxLevel,iNewMaxLevel / PCLevel)为最高点的二次函数(将iMinLevel视作X,结果视作Y)

if (iNewLevelMult < iLevelMult) then
    iNewLevelMult := iLevelMult;
//限制条件,计算出的新等级比率不能比原版小,否则不做改变

if (iNewLevelMult > 32767) then
    iNewLevelMult := 32767;
//限制条件,计算出的新等级比率不能超过32767,否则等于32767

SetElementNativeValues(e, 'ACBS\level Mult', (iNewLevelMult));

//**************************等级比率计算完毕***************************************//

回复

使用道具 举报

25

主题

1239

帖子

5万

积分

游戏VIP联动部

Rank: 16Rank: 16Rank: 16Rank: 16

点赞
760
贡献
615
猫币
57
精华
0
金元
34597
积分
52161
 楼主| 发表于 2021-11-1 15:23:06 | 显示全部楼层
9DMMER 发表于 2021-10-31 18:17
楼主太喜欢你这个脚本啦~能否把类似相关的问题做成Q&A放在帖子里以供查阅呀~
以及,能否给出一个对脚本 ...

代码解释放在置顶了,目前好像没有什么特别需要置顶的Q&A,有了再说
回复

使用道具 举报

20

主题

1235

帖子

14万

积分

玖大猫MOD汉化组

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

点赞
467
贡献
382
猫币
21
精华
0
金元
135283
积分
143298
发表于 2021-11-1 17:17:06 | 显示全部楼层
仙居剑客 发表于 2021-11-1 15:23
代码解释放在置顶了,目前好像没有什么特别需要置顶的Q&A,有了再说

太棒啦~多谢!
回复

使用道具 举报

3

主题

807

帖子

2万

积分

游戏之神

Rank: 14Rank: 14Rank: 14Rank: 14

点赞
3
贡献
7
猫币
0
精华
0
金元
12294
积分
26296
发表于 2021-12-26 15:21:15 | 显示全部楼层
牛逼啊~~~~~
回复

使用道具 举报

0

主题

124

帖子

5588

积分

游戏精英

Rank: 9Rank: 9Rank: 9

点赞
0
贡献
20
猫币
210
精华
0
金元
5364
积分
5588
发表于 2022-9-1 13:08:33 | 显示全部楼层
感谢大佬
回复

使用道具 举报

4

主题

576

帖子

7285

积分

骨灰玩家

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

点赞
0
贡献
8
猫币
0
精华
0
金元
6629
积分
7285
发表于 2022-9-17 14:49:20 | 显示全部楼层
已经把补丁放在最下面了 但是显示因循环无法排序。。。
回复

使用道具 举报

1

主题

312

帖子

4930

积分

游戏达人

Rank: 8Rank: 8

点赞
0
贡献
2
猫币
0
精华
0
金元
2497
积分
4930
发表于 2023-1-14 23:13:22 | 显示全部楼层
本帖最后由 kycx3000 于 2023-1-14 23:17 编辑
仙居剑客 发表于 2021-11-1 15:23
代码解释放在置顶了,目前好像没有什么特别需要置顶的Q&A,有了再说

大佬,照教程新增esp后,等级提升了,野生动物,猫猫狗狗都提升了,但是原版随从脸肤色变黑了,身上白的脸黑的,
回复

使用道具 举报

3

主题

468

帖子

5629

积分

游戏精英

Rank: 9Rank: 9Rank: 9

点赞
10
贡献
16
猫币
1
精华
0
金元
4951
积分
5629
发表于 2023-1-20 22:04:15 | 显示全部楼层
我是菜鸡,希望出个视频教程怎么使用,这个mod太好了,可惜不会安装
回复

使用道具 举报

0

主题

166

帖子

2280

积分

高级玩家

Rank: 4

点赞
0
贡献
0
猫币
0
精华
0
金元
2114
积分
2280
发表于 2024-9-7 18:51:35 | 显示全部楼层
6666666666
回复

使用道具 举报

12

主题

984

帖子

4万

积分

游戏终结者

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

点赞
201
贡献
176
猫币
10
精华
0
金元
33856
积分
44650
发表于 2025-2-13 05:47:26 | 显示全部楼层
本帖最后由 TNT00007 于 2025-2-13 05:52 编辑

171级的怪……从某种程度来说还是太弱小了……毕竟各种MOD一装的那种数据膨胀,很有可能一刀或者一箭就没了……测试过个别的原版MOD怪,2000级的才22000上下的血,171级估计也就是血量增加了1.5~2.5倍左右吧……这要是换成LE,分分钟血量翻个最少3倍
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|玖大猫论坛

GMT+8, 2025-12-31 00:57

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.