关于添加技能 枪手的手弩精通
台服dnf吧
全部回复
仅看楼主
level 6
963892741 楼主
首先感谢帖子https://tieba.baidu.com/p/9950230454的5l内容分享。直接贴PVF内是有效的。
只不过txt的内容我部分忽视了,因为部分代码应该不是跟贴出来的技能联动的nut。
发出来的技能是增加攻速,魔法暴击率和魔法伤害,但我想额外实现增加普攻设计子弹量的增加
苦于自己不会编程语言,所以直接问的AI。AI给我的代码内容是在中间部分添加
local projectileCount = sq_GetLevelData(sqrChr, 85, 5, skillLevel);
这一行代码,还要在后面改属性。
change_appendage.addParameter(CHANGE_STATUS_TYPE_PROJECTILE_COUNT, true, projectileCount.tofloat());
虽然我不懂DNF用的编程语言,但我寻思projec tile Count应该不是增加子弹数量的写法。
添加后进了游戏也确实没有效果。嗯,有会的教教吗?
2026年03月25日 07点03分 1
level 6
963892741 楼主
这里补充一下TXT内的代码
100`Gunner/bowgunmastery.skl`
(这部分是要写到skill/gunnerskill.lst的文件中的,要注意编号100是否被占用,比如我这里被占用了,就写了个111)
[skill info]
[index]
100
[icon pos]
47268
[/skill info]
(这部分是要写到clientonly/skilltree/gunner_sp.co的文件中的,也要注意100对应的编号技能,比如我就必须把100改成111和上面的对应,坐标不用变,不写这个游戏内的技能树你是找不到对应技能的就学不了这个技能。)
function ProcPassiveSkill_Gunner_beidong(obj, skill_index, skill_level)下粘贴
if (skill_index == 100)
{
if (skill_level > 0)
{
local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, skill_index, false, "character/gunner/bowgunmastery/ap_bowgunmastery.nut", true);
}
}
(这部分我就直接无视了,因为原帖提供的NUT文件是放在sqr目录下的,直接把NUT文件扔进去就行了。而这TXT文档内代码的路径,写的是character/gunner/bowgunmastery/ap_bowgunmastery.nut,gunner文件夹下都没有bowgunmastery文件夹,这调用的是寂寞?)
2026年03月25日 07点03分 2
level 8
增加子弹数量具体是什么意思?银弹那些弹种数量还是一套完整平A能打出的子弹数量,有没有国服原文描述或者图片我瞧瞧
2026年04月11日 06点04分 3
level 6
963892741 楼主
@鬼鬼就这种跟步枪精通类似,或者空中射击一样,每次普通攻击在最后一击前射出更多普通子弹。
2026年04月11日 08点04分 5
[滑稽]你的普攻1~2下循环的思路非常好,但是我不会写NUT,改pvf和数据库做作弊是我的极限了。
2026年04月11日 08点04分
level 6
963892741 楼主
function sq_AddFunctionName(appendage)
{
appendage.sq_AddFunctionName("proc", "proc_appendage_bowgunmastery")
appendage.sq_AddFunctionName("onStart", "onStart_appendage_bowgunmastery")
appendage.sq_AddFunctionName("onEnd", "onEnd_appendage_bowgunmastery")
}
function sq_AddEffect(appendage)
{
}
function proc_appendage_bowgunmastery(appendage)
{
if(!appendage) return;
local obj = appendage.getParent();
}
function onStart_appendage_bowgunmastery(appendage)
{
if(!appendage) return;
local obj = appendage.getParent();
local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj);
if(sqrChr.getWeaponSubType() == 4)
{
local skillLevel = sqrChr.sq_GetSkillLevel(111);
local attackSpeed = sq_GetLevelData(sqrChr, 111, 0, skillLevel);
local magicalcrittcal = sq_GetLevelData(sqrChr, 111, 1, skillLevel);
local magicalAttackBonus = sq_GetLevelData(sqrChr, 111, 2, skillLevel);
local projectileCount = sq_GetLevelData(sqrChr, 111, 3, skillLevel);
local change_appendage = appendage.sq_getChangeStatus("bowgunmastery");
if(!change_appendage)
{
change_appendage = appendage.sq_AddChangeStatus("bowgunmastery",obj, obj, 0, CHANGE_STATUS_TYPE_MAGICAL_ATTACK_BONUS, true, magicalAttackBonus);
}
if(change_appendage)
{
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_ATTACK_BONUS, true, magicalAttackBonus.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_ATTACK_SPEED, false, attackSpeed.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_CRITICAL_HIT_RATE, false, magicalcrittcal.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_ALL_STAT, true, projectileCount.tofloat());
}
}
}
function onEnd_appendage_bowgunmastery(appendage)
{
if(!appendage) return;
local obj = appendage.getParent();
local change = appendage.sq_getChangeStatus("atbowgunmastery");
if(change)
{
change.clearParameter();
change.sq_RemoveChangeStatus();
}
}
这是我贴吧下载的女枪手弩精通的nut,我尝试过问AI加上增加子弹,就是local projectileCount这部分,但没成功。
2026年04月11日 08点04分 6
ap用来加状态(3速暴击四维之类)是可以,你在这加子弹铁行不通的[汗]
2026年04月11日 13点04分
level 8
我自己测了下,枪手平A子状态只分0和1,截取1(也就是终结那一下)然后多发射几颗子弹是可以的,比较简单,但这样有个非常不完美的点就是子弹只会平着射出去 作为强迫症我绝不能忍受[怒]
2026年04月11日 13点04分 7
level 8
所以我还是用最笨的方式,平A计数,监听攻击键,如果要加3颗子弹就监听平A状态下是否攻击达到3次,如果达到3次后监听到攻击键按下就刷新人物状态从新开始平A,这样就可以解决后续多射的子弹可以改方向的问题,但也不完美,需要每帧循环监听性能需求比较高,然后你版本高其他函数有平X起手相关的话可能会出不明bug,我只在70s2上测试通过
2026年04月11日 13点04分 8
我日,那步枪加子弹怎么实现的呢。有没有可能用负数实现多射子弹?
2026年04月11日 14点04分
实现方式我上面不是说了两个思路么,都可以做到加子弹,各有各的缺点 不能用负数,用其他大于1的数字也行,那样更麻烦需要自己设置动作 动画和攻击信息 完全没必要[黑线]
2026年04月11日 16点04分
我好像理解错了,你说别人步枪精通怎么加的子弹?你的截图是国服还是别人的服?国服的写法也抄不到,台服加子弹比如空中射击写死在exe你也看不到
2026年04月11日 16点04分
@963892741 我对版本不熟,只玩了70s2a1,连台服流出的原版有哪些技能都不清楚[怒],不介意的话给我讲点版本更新技能迭代方面的内容[吐舌]
2026年04月11日 16点04分
level 6
963892741 楼主
function sq_AddFunctionName(appendage)
{
appendage.sq_AddFunctionName("proc", "proc_appendage_atbowgunmastery")
appendage.sq_AddFunctionName("onStart", "onStart_appendage_atbowgunmastery")
appendage.sq_AddFunctionName("onEnd", "onEnd_appendage_atbowgunmastery")
}
function sq_AddEffect(appendage)
{
}
function proc_appendage_atbowgunmastery(appendage)
{
if(!appendage) return;
local obj = appendage.getParent();
}
function onStart_appendage_atbowgunmastery(appendage)
{
if(!appendage) return;
local obj = appendage.getParent();
local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj);
if(sqrChr.getWeaponSubType() == 4)
{
local skillLevel = sqrChr.sq_GetSkillLevel(85);
local magicalAttackBonus = sq_GetLevelData(sqrChr, 85, 2, skillLevel);
local attackSpeed = sq_GetLevelData(sqrChr, 85, 7, skillLevel);
local magicalcrittcal = sq_GetLevelData(sqrChr, 85, 0, skillLevel);
local change_appendage = appendage.sq_getChangeStatus("atbowgunmastery");
if(!change_appendage)
{
change_appendage = appendage.sq_AddChangeStatus("atbowgunmastery",obj, obj, 0, CHANGE_STATUS_TYPE_MAGICAL_ATTACK_BONUS, true, magicalAttackBonus);
}
if(change_appendage)
{
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_ATTACK_BONUS, true, magicalAttackBonus.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_ATTACK_SPEED, false, attackSpeed.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_CRITICAL_HIT_RATE, false, magicalcrittcal.tofloat());
}
}
}
function onEnd_appendage_atbowgunmastery(appendage)
{
if(!appendage) return;
local obj = appendage.getParent();
}
这是人家的手弩精通代码,我的其实就是用这个改的。你要是需要整套sqr我另外导出。
2026年04月11日 17点04分 9
level 5
可以分享下手弩镜头吗 我添加进去无效
2026年07月18日 07点07分 10
level 14
秋佬璀璨有 可以去提
2026年07月25日 23点07分 11
1