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

nut修改实例4:特效真伤,附完成血爆-第二部分

2

听众

405

主题

4万

积分

名望
8796
贡献
8796
学分
8681

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

学无止境发表于 2024-8-19 19:56:29 | 查看全部 |阅读模式
  • 百分比伤害
①atk文件部分:
atk文件需要有图中语句,才能为百分比伤害。
②nut部分:
//获取百分比伤害
local attackBonusRate = obj.sq_GetBonusRateWithPassive(技能编号 , 主动技能state, 动态数据编号, 1.0);
注:动态数据即为skl内的[level info]下的数据
(动态数据编号只需要填一个编号)
//开始写入数据
obj.sq_StartWrite();
//写入百分比伤害数值 (格式代码必要流程)
obj.sq_WriteDword(attackBonusRate);
//创建特效
obj.sq_SendCreatePassiveObjectPacket(24201, 0, 120, 1, 0);   (数字分别代表 特效  X Y Z 轴坐标位置)
特效nut部分:
function setCustomData_po_特效名称(obj, receiveData) //ReceiveData为上面写入的数据
{
if(!obj)
return;
//获取写入的百分比伤害数据
local attackBonusRate = receiveData.readDword();
//获取特效的atk文件
local attackInfo = sq_GetCurrentAttackInfo(obj);
//atk设置百分比伤害
sq_SetCurrentAttackBonusRate(attackInfo, attackBonusRate);
}
nut百分比伤害就是设置atk中的
  • 固定伤害
//获取固伤数据
local attackPower = obj.sq_GetPowerWithPassive(技能编号, 主动技能state, 动态数据编号, -1, 1.0);
//开始写入数据 (格式代码必要流程)
obj.sq_StartWrite();
//写入固伤伤害数值
obj.sq_WriteDword(attackPower);
//创建特效
obj.sq_SendCreatePassiveObjectPacket(24201, 0, 120, 1, 0);
特效nut部分:
function setCustomData_po_特效名称(obj, receiveData)  //ReceiveData为上面写入的数据(代表//获取的百分比伤害 attackBonusRate)
{
if(!obj)
return;
//获取写入的固伤伤害数据
local attackPower = receiveData.readDword();
//获取特效的atk文件
local attackInfo = sq_GetCurrentAttackInfo(obj);
//atk设置固伤伤害
sq_SetCurrentAttackBonusRate(attackInfo, attackPower);
}
nut设置固伤伤害就是设置atk中的
  • 百分比+固定伤害
//获取百分比伤害
local attackBonusRate = obj.sq_GetBonusRateWithPassive(技能编号 , 主动技能state, 动态数据编号, 1.0);
//获取固伤
local attackPower = obj.sq_GetPowerWithPassive(技能编号, 主动技能state, 动态数据编号, -1, 1.0);
//开始写入数据
obj.sq_StartWrite();
//写入百分比伤害数值(receiveData中的第一个数据)
obj.sq_WriteDword(attackBonusRate);
//写入固伤数值(receiveData中的第二个数据)
obj.sq_WriteDword(attackPower);
//创建特效
obj.sq_SendCreatePassiveObjectPacket(24201, 0, 120, 1, 0);
特效nut部分:
function setCustomData_po_特效名称(obj, receiveData)
{
if(!obj)
return;
//获取百分比伤害数据(receiveData中的第一个数据)
local attackBonusRate = receiveData.readDword();
//获取固伤数据(receiveData中的第二个数据)
local power = receiveData.readDword();
//获取特效的atk文件
local attackInfo = sq_GetCurrentAttackInfo(obj);
//atk设置百分比伤害
sq_SetCurrentAttackBonusRate(attackInfo, attackBonusRate);
//atk设置固伤伤害
sq_SetCurrentAttackPower(attackInfo, power);
}
附:血爆真伤
能挂载nut的特效编号要在24300到24400之间,所以首先要改一下血爆特效的编号(改编号不用重跑服务端)
改完编号后,给特效挂载一个nut脚本,仍然是增加并注册一个脚本。
然后就是完成脚本,参考写法如下:
人物脚本修改:
function onKeyFrameFlag_BloodBoom(obj,flagIndex)
{
if(!obj)
return false;
if (flagIndex == 10001)
{
obj.sq_SendCreatePassiveObjectPacket(2020011001, 0, 0, 0, 0);  (创建编号2020011001的特效)
//获取固伤数据
local power = obj.sq_GetPowerWithPassive(SKILL_BLOOD_BOOM, STATE_BLOOD_BOOM, 0, -1, 1.0);
local z = obj.getObjectHeight()/2;
//开始写入数据
obj.sq_StartWrite();
//写入固伤数值
obj.sq_WriteDword(power);
//创建特效
obj.sq_SendCreatePassiveObjectPacket(24358, 0, 0, 0, z);
}
return true;
}
特效脚本部分:
//凡是写入了数据的特效(要求编号在24300到24400),均会执行此函数
function setCustomData_po_bloodboomfinish(obj, receiveData)//此后缀名为特效的名称,注意大小写要一致
{
if(!obj)
return;
//获取固伤数值
local damage = receiveData.readDword();
//获取特效atk
local attackInfo = sq_GetCurrentAttackInfo(obj);
//设置固伤
sq_SetCurrentAttackPower(attackInfo, damage);
}
function onEndCurrentAni_po_bloodboomfinish(obj)//同人物的onEndCurrentAni函数一样,特效的这个函数也是在特效动画结束时执行
{
if(!obj)
return;
//特效动画结束时销毁特效
sq_SendDestroyPacketPassiveObject(obj);
}

学无止境社区免责声明
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号
关灯 在本版发帖
扫一扫添加微信客服
返回顶部
快速回复 返回顶部 返回列表