返回列表 发布新帖
查看: 8|回复: 0

nut修改实例7:buff技能

2

听众

405

主题

4万

积分

名望
8796
贡献
8796
学分
8681

最佳新人活跃会员热心会员推广达人宣传达人灌水之王

学无止境发表于 2024-8-19 20:00:27 | 查看全部 |阅读模式
今天讲一下buff技能的写法。
首先添加一个技能
技能添加并且注册之后,需要上传服务端跑五国
我先跑个五国
五国跑完,我们把技能添加到技能树内,还是添加到狂战士的技能树
接下来开始nut部分
Nut部分已经写好了,我们先测试一下技能是否可以使用,然后再进行下一步
技能是可以使用的
在开始下一步之前,先了解一下buff技能
暴走就是一个buff技能,使用后在一段时间内人物的属性会变化(增加或减少)
使用buff技能后左下部分还会显示出提示
我们要写的buff技能大致也要做到这些
Buff技能的属性我们先写成增加1000点力量
Buff技能的关键就在于这个ap文件,把ap文件附加到人物身上就能做到在规定时间内改变人物属性,附加ap文件的语句可以参考男法师的buff技能
这一段就是附加ap的写法了
其中第一行
local appendage = CNSquirrelAppendage.sq_AppendAppendage(parentObj, sourceObj, SKILL_MAGIC_SHIELD, false, "Character/ATMage/MagicShield/ap_MagicShield.nut", false);
第一个参数parentObj指的是附加ap的对象,这个对象可以在ap内用local obj = appendage.getParent();来获取
第二个参数sourceObj指的是ap来源的对象,这个对象可以在ap内用local obj = appendage.getSource();来获取
举个例子来说明这两个对象之间的关系:
怪物A附加给人物A一个ap,那么怪物A就是ap的来源,人物A就是ap附加的对象
第三个参数SKILL_MAGIC_SHIELD指的是ap对应的技能编号
第四个参数的意义是ap效果是否可叠加,填false则不可叠加,填true则可叠加。比如ap内容是增加100点力量,如果ap可以叠加那么再次附加ap之后增加的力量就是200点,如果ap不能叠加那么再次附加ap之后增加的力量还是100点。
第五个参数"Character/ATMage/MagicShield/ap_MagicShield.nut"指定的是ap文件路径。
第六个参数指的是ap是否自动附加,填false则不自动附加,需要在执行下面的代码后才附加CNSquirrelAppendage.sq_Append(appendage, obj, obj);填true则自动附加。在被动技能章节会用到这个参数。
第二行代码
appendage.setAppendCauseSkill(BUFF_CAUSE_SKILL,sq_getJob(obj),SKILL_SWORDMAN8,skillLevel);
其功能就是实现左下角图标,SKILL_SWORDMAN8这个参数对应显示的技能,skillLevel对应显示的技能等级
第三行代码
appendage.sq_SetValidTime(Time);
其作用是设定ap的持续时间,Time单位是毫秒
第四行代码
CNSquirrelAppendage.sq_Append(appendage, obj, obj);
其作用刚刚已经提到,就是附加ap
这些都了解之后我们开始写具体内容
obj.sq_GetSkillLevel(SKILL_BUFF_SAMPLE);此代码的作用是获取SKILL_BUFF_SAMPLE当前的等级
我们先把buff技能的持续时间写入skl文件
local time = obj.sq_GetLevelData(SKILL_BUFF_SAMPLE, 0, skillLevel);此代码的作用是从skl获取数据
第一个参数SKILL_BUFF_SAMPLE是技能编号
第二个参数0是数据的位置
第三个参数skillLevel是技能等级
写完这些后我们上线测试一下
可以看到显示的时间不太对,5000毫秒应该显示成5秒,这个原因在于
箭头所指的1.0意为按数据*1.0的结果来显示
我们把这个1.0改成0.001,让它显示数据*0.001
显示正常了
可以看到,一级的buff持续5秒,三级的buff持续15秒,目前持续时间是受skl数据控制的
接下来我们写加力量的代码
红框内就是增加人物属性的写法,这个写法相对固定,可以直接套用
可改变的属性可以在箭头所指的文件内找到,其中
CHANGE_STATUS_TYPE_PHYSICAL_ATTACK是力量
CHANGE_STATUS_TYPE_MAGICAL_ATTACK是智力
我们先写增加力量
可以看到释放buff后力量增加了1000点
Buff结束后力量又回到了266点
我们下面写增加两个属性,力量和智力
增加多个属性只需要在下面的那个位置添加代码就好了,上面的不需要动
效果已经实现了
最后我们要把这两个数据也写进skl文件,让它受skl文件的控制
这部分代码是存储数据
其中第一行
appendage.getVar("buffSampleSkillData").clear_vector();
其作用为清空vector,buffSampleSkillData是此vector的名称,appendage是此vector的对象
第二行代码
appendage.getVar("buffSampleSkillData").push_vector(physicalAttack);
意义为在appendage对象的名为buffSampleSkillData的vector内储存一个数据
第三行代码
appendage.getVar("buffSampleSkillData").push_vector(magicalAttack);
意义与第二行代码相同
这两行代码是获取数据
其中第一行代码
local physicalAttack = appendage.getVar("buffSampleSkillData").get_vector(0);
是获取appendage对象的名为buffSampleSkillData的vector内的第一个数据
第二行代码
local magicalAttack = appendage.getVar("buffSampleSkillData").get_vector(1);
是获取第二个数据
数据的顺序与代码的前后顺序有关
appendage.getVar("buffSampleSkillData").clear_vector();
appendage.getVar("buffSampleSkillData").push_vector(physicalAttack);
appendage.getVar("buffSampleSkillData").push_vector(magicalAttack);
此处代码是先存入physicalAttack,后存入magicalAttack
所以physicalAttack就是第一个数据,magicalAttack就是第二个数据
我们现在上线测试一下效果
可以看到力量和智力都增加了150点
Buff技能的教程就到这里

提取码:zueo

--来自百度网盘超级会员V1的分享

学无止境社区免责声明
1 本社区名称:学无止境
2 永久网址: bbs.chaobaindnf.cn
3 本社区提供的一切软件、教程和内容信息仅限用于学习和研究目的;
4 不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
5 本社区信息来自网络收集整理,版权争议与本站无关。
6 通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。
7 本如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。
8 我们非常重视版权问题,如有侵权请与我们联系删除。敬请谅解!联系邮箱:849991827@qq.com或者QQ:849991827

名望值排行榜:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

投诉/建议联系

admin@chaobaindnf.cn

未经授权禁止转载,复制和建立镜像,
如有违反,追究法律责任
  • 加入Q群
  • 添加微信客服
Copyright © 2001-2024 学无止境技术分享 版权所有 All Rights Reserved. 皖ICP备2024057715号
Copyright 2024 bbs.chaobaindnf.cn 版权所有 作者:学无止境技术分享 皖ICP备2024057715号|皖ICP备2024057715号
关灯 在本版发帖
扫一扫添加微信客服
返回顶部
快速回复 返回顶部 返回列表