🥋
AttributePlus - Pro
  • AttributePlus
  • 插件相关
    • 高版本物品问题
    • 配置
      • attribute.yml
      • stats.yml
      • script.yml
    • 语言
  • 属性相关
    • 优先级 / 战斗力 / 公式 / 消息
    • MythicMobs 属性相关
  • 读取相关
    • 过滤符相关
    • 装备条件标签
    • NBT属性加载
    • 自定义条件标签
    • 新读取格式相关 (>=3.3.0.7)
    • 旧读取格式相关 (<=3.3.0.6)
    • 属性内嵌条件格式
    • 属性百分比读取格式
  • 机制相关
    • 蓄力机制
    • 盾牌机制
    • 弓箭机制
    • 召唤机制
  • 属性脚本
    • 属性类型
    • 脚本教学
      • RUNTIME 类型
      • UPDATE 类型
      • CUSTOM 类型
      • KILLER 类型
      • 延迟触发任务
    • 脚本方法
    • 常见问题
  • 开发文档
    • API
    • Counter 计数器
    • AttributeComponent
      • AttributeType
      • Example
      • AttributeName
    • CustomTriggerComponent
    • EmbeddedCondition
    • ReadComponent
      • 教学
  • 更新记录
由 GitBook 提供支持
在本页

这有帮助吗?

  1. 属性脚本
  2. 脚本教学

UPDATE 类型

属性教程

属性效果

制作一个伤害属性加成的属性,公式为 "{entityA:物理伤害}*{value}/100"

var priority = 105
var combatPower = 5.0
var attributeName = "伤害加成"
var attributeType = "UPDATE"
var placeholder = "updateAttribute"

function onLoad(attr){
  /* UPDATE 类型建议将 setSkipFilter 设为 true */
  attr.setSkipFilter(true)
  /* 设置公式 */
  attr.setFormula("{entityA:物理伤害}*{value}/100")
  return attr
}

function run(attr, entity, handle){
  var value = attr.getRandomValue(entity, handle)
  var additionValue = 0.0
  /* 获取实体 AttributeData 数据 */
  var data = attr.getData(entity, handle)
  /* 清除掉上次增加的属性源,防止属性反复叠加 */
  AttributeAPI.takeSourceAttribute(data, "伤害加成")
  
  if (value > 0){
      /* 获取加成值 */
      var additionValue = attr.getFormulaValue(function(){
      var damageValue = attr.getRandomValue(entity, "物理伤害", handle)
	  return damageValue*value/100
      })
   }

   /* 调用 AttributeAPI 内方法增加属性 */
   AttributeAPI.addSourceAttribute(data, "伤害加成", Arrays.asList("物理伤害: "+additionValue), false)
   return false
}
上一页RUNTIME 类型下一页CUSTOM 类型

最后更新于8个月前

这有帮助吗?