脚本教学
属性说明
代码
/* 每个脚本必须先写几个变量,否则属性无法注册 */
/*这里可以先随便设,最后需要去 attribute.yml 按实际情况调整优先级*/
var priority = 13
/*默认的战斗力*/
var combatPower = 5.0
/*默认属性名*/
var attributeName = "溟灭几率"
/*属性类型*/
var attributeType = "ATTACK"
/*属性变量 (%ap_testAttribute%)*/
var placeholder = "testAttribute"var priority = 13
var combatPower = 5.0
var attributeName = "溟灭几率"
var attributeType = "ATTACK"
var placeholder = "testAttribute"
/* 每个属性再注册时都会调用该方法,也可以忽略不写 */
function onLoad(attr) {
/* 溟灭属性需要通过 溟灭伤害 来提供伤害值,所以我们得注册一个 OTHER 的 溟灭伤害 属性 */
/* 这里注册的属性 attribute.yml 也会生成相对应的配置内容*/
Utils.registerOtherAttribute("溟灭伤害", 1.0, "testAttributeDamage")
/* 必须返回 attr */
return attr
}
/* 因为属性是 ATTACK 类型,所以我们需要写 runAttack 方法 */
/* attacker 为攻击者,entity 为被攻击者*/
function runAttack(attr, attacker, entity, handle) {
/* 判断是否非玩家 */
if (!Utils.isType(entity, Arrays.asList(EntityType.PLAYER))){
/* 前面提过 Attr 代表这个属性类的本身,所以可以用来调用 AttributeComponent 内的方法 */
var value = attr.getRandomValue(attacker, handle)
/* 通过 Attr 内提供的方法,决定此次属性是否触发 */
var chance = attr.chance(value)
if (chance) {
/* 当触发时获取攻击者身上的 溟灭伤害 属性值,这次范围随机 */
var damage = attr.getRandomValue(attacker, "溟灭伤害", handle)
attr.addDamage(attacker, damage, handle)
}
}
/* true 则会显示提示语 */
/* false 则不会显示提示语*/
return chance
}后续
最后更新于