找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 866|回复: 14

[分享]nut注册的实现过程与简单的力智平衡

[复制链接]

2001

主题

1万

回帖

5万

积分

出神入化

积分
56379
发表于 2025-3-10 21:05:25 | 显示全部楼层 |阅读模式
此贴所有资源均来自于吧内,本人只做了部分整合工作,发贴一是为了显摆周末的成果(不是),二则是为了请教实现过程中产生的部分问题。
关键项目地址:
https://gitee.com/sunstar59/nut-function-extension
回复

使用道具 举报

2001

主题

1万

回帖

5万

积分

出神入化

积分
56379
 楼主| 发表于 2025-3-10 21:05:42 | 显示全部楼层

图为简易版力智平衡实现结果


图为体精平衡实现后带来的问题(支援兵荣誉祝福后的下场),下面会进行详细的描述

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

2001

主题

1万

回帖

5万

积分

出神入化

积分
56379
 楼主| 发表于 2025-3-10 21:06:13 | 显示全部楼层
完成上面配置后,此时已经可以直接生成dll,项目内自带有大佬提供的sqx_send_notice等方法,可以使用大合集加载dll后进行测试
测试可以通过游戏内输入//dofile xxx.nut (xxx.nut置于根目录)进行
我的测试代码:
local rgb = sq_RGB(0,255,0);
sqx_send_notice("hi",rgb,14);//14为喇叭,其余两框在示例内有标注
如果成功,则会在游戏内喇叭处出现绿色"hi"字样
回复

使用道具 举报

2001

主题

1万

回帖

5万

积分

出神入化

积分
56379
 楼主| 发表于 2025-3-10 21:06:20 | 显示全部楼层
3楼被吞的图重发:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

2001

主题

1万

回帖

5万

积分

出神入化

积分
56379
 楼主| 发表于 2025-3-10 21:07:14 | 显示全部楼层
我们新建sq函数,只需要sqfunctionhook.cpp、sqxtfunction.cpp、sqxfunction.h内进行即可
通过查询squirrel官方提供的文档,了解到如果在C++内实现sq函数并获取返回值,有对应约定为需要返回1;
则实现力智平衡最关键的获取角色力量、智力方法最简单方法如下:
//sqxfunction.cpp内实现
INT sqx_GetCharacterStrength(HSQUIRRELVM vm)
{
INT strength = readVal(0x1D5130C + 0x0400000);
sq_pushinteger(vm, strength);
return 1;
}
INT sqx_GetCharacterIntelligence(HSQUIRRELVM vm)
{
INT intelligence = readVal(0x1D5132C + 0x0400000);
sq_pushinteger(vm, intelligence);
return 1;
}
//sqxfunction.h内做声明
INT sqx_GetCharacterStrength(HSQUIRRELVM vm);
INT sqx_GetCharacterIntelligence(HSQUIRRELVM vm);
//sqfunctionhook.cpp内startRegistNewSqxFunction()中注册
registerFunction(L"sqx_GetCharacterStrength", sqx_GetCharacterStrength);
registerFunction(L"sqx_GetCharacterIntelligence", sqx_GetCharacterIntelligence);
回复

使用道具 举报

2001

主题

1万

回帖

5万

积分

出神入化

积分
56379
 楼主| 发表于 2025-3-10 21:07:23 | 显示全部楼层
此时我们已可以生成dll并挂载后,在pvf内部调用我们注册的sqx_GetCharacterStrength()与sqx_GetCharacterIntelligence();
并通过其获取的值在ap中来完成简单的力智平衡,以下代码为我在战灵潜能的procap中加入
local currentStrength = sqx_GetCharacterStrength();
local currentIntelligence = sqx_GetCharacterIntelligence();
local change_appendage = appendage.sq_getChangeStatus("zhanlingqianneng");
if(!change_appendage)
{change_appendage = appendage.sq_AddChangeStatus("zhanlingqianneng",obj, obj, 0, CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, false, 0);}
if(change_appendage)
{if(currentStrength < currentIntelligence )
{
local delta = (currentIntelligence - currentStrength).tofloat();   change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, false, delta);
}
else if(currentStrength > currentIntelligence)
{local delta = (-currentIntelligence + currentStrength).tofloat();change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_ATTACK, false, delta);
}
}
回复

使用道具 举报

2001

主题

1万

回帖

5万

积分

出神入化

积分
56379
 楼主| 发表于 2025-3-10 21:07:55 | 显示全部楼层
上面所有就是我周末的实验结果,对于sq的vm与C的关系只不过是一知半解
但动手操作了以上流程,已经对注册nut函数略有眉目,那么下面就轮到我的请教时间了

请问路过的大佬们
INT strength = readVal(0x1D5130C + 0x0400000);
是我通过CE查询出的当前角色属性基址,但对于支援兵,获取的仍为当前操控的角色属性,在我上一条中实现属性平衡的方式会导致支援兵出现的几秒内持续叠加主角色属性的差值,从而使得2l中的结果出现

我该怎样才能更聪明的得到obj的各属性值?求大佬指点

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

1992

主题

1万

回帖

5万

积分

出神入化

积分
56457
发表于 2025-3-10 21:08:25 | 显示全部楼层
意思是把当前角色的计算值加到了支援兵,然后因为当前角色数值没能平衡导致持续触发,最后支援兵属性暴增致使荣誉祝福数据爆炸?
回复

使用道具 举报

1919

主题

1万

回帖

5万

积分

出神入化

积分
55940
发表于 2025-3-10 21:08:36 | 显示全部楼层
奶志愿兵不好平衡,但是这个点对战法而言太伟大了啊!大佬牛逼
回复

使用道具 举报

1367

主题

1万

回帖

4万

积分

登峰造极

积分
43616
发表于 2025-3-10 21:09:29 | 显示全部楼层
627的吗?
回复

使用道具 举报

1970

主题

1万

回帖

5万

积分

出神入化

积分
56744
发表于 2025-3-10 21:09:55 | 显示全部楼层
那支援兵应该用apc的基址
回复

使用道具 举报

2001

主题

1万

回帖

5万

积分

出神入化

积分
56379
 楼主| 发表于 2025-3-10 21:10:06 | 显示全部楼层
技术贴先收藏
回复

使用道具 举报

发表于 2025-3-10 21:11:06 | 显示全部楼层
技术贴先收藏,大佬牛逼!
回复

使用道具 举报

1970

主题

1万

回帖

5万

积分

出神入化

积分
56744
发表于 2025-3-10 21:11:47 | 显示全部楼层
不知道国服支援兵,吃药平衡吗,不重复平衡的话,把平衡的技能的nut中的附加ap改成进地下城,复活后,站街的时候,加自身buff技能触发一次,附加一个持续时间无限的补齐差值的buff,来规避掉支援兵入场时的力智平衡。好久不研究nut了不知道行不行

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

1267

主题

1万

回帖

4万

积分

登峰造极

积分
42103
发表于 2025-3-10 21:12:44 | 显示全部楼层
大佬有QQ吗
回复

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表