
DOF|给快捷栏装备纹章加入DIY属性
sqr/equipment/ap
这是纹章装备的nut文件的文件夹路径,首先进入这个路径.我的PVF有这些纹章的nut文件.
我们以100000106这个文件为例
function sq_AddFunctionName(appendage)
{
appendage.sq_AddFunctionName("onStart", "onStart_appendage_100000106")
appendage.sq_AddFunctionName("onEnd", "onEnd_appendage_100000106")
}
function onStart_appendage_100000106(appendage)
{
if (!appendage) return;
local obj = appendage.getParent();
if (!obj)
{
appendage.setValid(false);
return;
}
local spectrumAppendage = appendage.sq_GetOcularSpectrum("ocularSpectrum");
if(!spectrumAppendage)
{
spectrumAppendage = appendage.sq_AddOcularSpectrum("ocularSpectrum", obj, obj, 100);
}
sq_SetParameterOcularSpectrum(spectrumAppendage, 100, 50, true, sq_RGBA(0, 255, 255, 155), sq_RGBA(0, 255, 255, 0), 2, 2, 2);
sq_SetParameterOcularSpectrum(spectrumAppendage, 100, 50, true, sq_RGBA(0, 255, 255, 155), sq_RGBA(0, 255, 255, 0), 2, 0, 1);
local physicalAttack = 125;
local physicalDefense = 125;
local magicalAttack = 125;
local magicalDefense = 125;
local equipmentphysicalAttack = 85;
local equipmentmagicalAttack = 85;
local equipmentphysicalgenuine = 85;
local equipmentmagicalgenuine = 85;
local attackall = 15;
local physicalrate = 10;
local magicaltate = 10;
local stuck = -9;
local cooltime = -0.1;
local change_appendage = appendage.sq_getChangeStatus("100000106");
if (!change_appendage)
{
change_appendage = appendage.sq_AddChangeStatus("100000106", obj, obj, 0, 37, false, physicalAttack);
}
if (change_appendage)
{
change_appendage.clearParameter();
change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, false, physicalAttack.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_DEFENSE, false, physicalDefense.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_ATTACK, false, magicalAttack.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_DEFENSE, false, magicalDefense.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_PHYSICAL_ATTACK, false, equipmentphysicalAttack.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_MAGICAL_ATTACK, false, equipmentmagicalAttack.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_ADDITIONAL_PHYSICAL_GENUINE_ATTACK, false, equipmentphysicalgenuine.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_ADDITIONAL_MAGICAL_GENUINE_ATTACK, false, equipmentmagicalgenuine.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_ELEMENT_ATTACK_ALL, false, attackall.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_CRITICAL_DAMAGE_RATE, false, physicalrate.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_CRITICAL_DAMAGE_RATE, false, magicaltate.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_STUCK, false, stuck.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_COOLTIME_DECLINE, false, cooltime.tofloat());
}
}
function onEnd_appendage_100000106(appendage)
{
if (!appendage) return;
local obj = appendage.getParent();
local spectrumAppendage = appendage.sq_GetOcularSpectrum("ocularSpectrum");
if (spectrumAppendage)
{
spectrumAppendage.endCreateSpectrum();
}
}
可以看到38行有一个字段 local cooltime = -0.1; 很明显cooltime是减CD,这里设置的是-10%的CD.
另外61行,可以看到 change_appendage.addParameter(CHANGE_STATUS_TYPE_COOLTIME_DECLINE, false, cooltime.tofloat());
这边是加载这个减CD的属性,只需要修改这两处,就能给纹章增加这个减CD的属性
当然,需要记得在装备描述内加入这个此条的文字描述,要不然属性能生效,但是道具说明内看不到这条属性
同理,我们可以加入增加伤害的属性,例如 额外暴击伤害 +20%
local physicalrate = 20;
local magicaltate = 20;
需要加入以上这两条属性,然后在下方加入
change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_CRITICAL_DAMAGE_RATE, false, physicalrate.tofloat());
change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_CRITICAL_DAMAGE_RATE, false, magicaltate.tofloat());
为什么是两条,一条是魔法爆伤,一条是物理爆伤,是分开计算的.
还可以加入其他属性,也可以DIY加入你想要的属性
ps:nut文件中有两处100000106,这是消耗品列表中纹章的代码,也就是说,这个纹章的逻辑是这样的,穿戴了纹章,进图加载属性.