Skip to content

从 AttributePlus 迁移

将 AttributePlus 的脚本属性修改部分内容,即可适配 CraneAttribute

本篇只概述 JavaScript

属性类型

ATTACKDEFENSE: ATTACK_AND_DENFENSE
UPDATE: UPDATE_AFTER
RUNTIME: RUNTIME_AFTER
KILL: PLAYER_KILL_ENTITY
CUSTOM: 其他自定义实现

对应修改属性类型即可,注意 ATTACK_AND_DENFENSE 包含 ATTACKDEFENSE 两种效果

变量与函数名

JavaScript
var priority = 1 // 优先级
var combatPower = 1.0 // 战斗力
var attributeName = "测试脚本属性" // 属性名
var attributeType = "ATTACK" // 属性类型
var placeholder = "testAttribute" // 变量名
var priority = 1 // 优先级
var power = 1.0 // 战斗力
var name = "测试脚本属性" // 属性名
var type = "ATTACK_AND_DEFENSE" // 属性类型
var id = "TEST_ATTRIBUTE" // id
var max = -1.0 // 最大值
JavaScript
function init(attr) {  // 新增 init 函数,在 onEnable 之前运行
} 


function onLoad(attr) {  // 原 onLoad 函数
    ... // 你的代码
	return attr 
} 
function onEnable(attr) {  // onLoad 改成 onEnable,什么都不需要返回
    ... // 你的代码
} 


function onDisable(attr) {  // 新增 onDisable 函数,在属性卸载(重载时会卸载)时运行
} 
JavaScript
function runAttack(attr, attacker, entity, handle) { 
    ... // 你的代码
    return true
} 
function onAttackAndDefense(attr, attacker, entity, handler) { 
    ... // 你的代码
    return true
} 
JavaScript
function runDefense(attr, killer, entity, handle) { 
    ... // 你的代码
    return true
} 
function onAttackAndDefense(attr, attacker, entity, handler) { 
    ... // 你的代码
    return true
} 
JavaScript
function run(attr, entity, handle) {
    ... // 你的代码
    return true
}
function onUpdateAfter(attr, entity, handler) {
    ... // 你的代码
    return true
}
JavaScript
function run(attr, entity, handle) {
    ... // 你的代码
    return true
}
function onRuntimeAfter(attr, entity, handler) {
    ... // 你的代码
    return true
}
JavaScript
function runKiller(attr, killer, entity, handle) {
    ... // 你的代码
    return true
}
function onPlayerKillEntity(attr, killer, entity, handler) {
    ... // 你的代码
    return true
}
JavaScript
function runCustom(attr, caster, target, params, source, handle) {
    ... // 你的代码
    return true
}
function onExtHandler(attr, 由其他开发者提供的参数, handler) {
    ... // 你的代码
    return true
}

对应修改即可

其他

在 AttributePlus 中编写属性时,通常使用 attr.xxx(xxx, handle) 来获取或处理数据
在 CraneAttribute 则是通过处理器(hander)来获取或处理数据,如 hander.xxx(xxx)

其他方法

AttributePlus 中几乎所有 attr.xxx(xxx, handle) 方法,都可以在 CraneAttribute 中找到相同和类似方法,具体请参阅 javadoc