• API(eca&lua)
  • Lua
  • API
  • Ability

Ability

技能

add_cd

(method) Ability:add_cd(value: number)

增加冷却时间

@param value — 冷却

add_float_attr

(method) Ability:add_float_attr(key: string, value: number)

增加实数属性

@param key — 属性key

@param value — 属性值

add_int_attr

(method) Ability:add_int_attr(key: string, value: integer)

增加整数属性

@param key — 属性key

@param value — 属性值

add_level

(method) Ability:add_level(value: integer)

增加技能等级

@param value — 等级

add_player_attr_cost

(method) Ability:add_player_attr_cost(key: string, value: number)

增加技能玩家属性消耗

@param key — 属性key

@param value — 属性值

add_remaining_cd

(method) Ability:add_remaining_cd(value: number)

增加技能剩余冷却时间

@param value — 剩余冷却时间

add_stack

(method) Ability:add_stack(value: integer)

增加技能充能层数

@param value — 层数

add_tag

(method) Ability:add_tag(tag: string)

添加标签

@param tag — 标签

can_cast_when_hp_insufficient

(method) Ability:can_cast_when_hp_insufficient()
  -> can_cast: boolean

生命不足是否可以释放

@return can_cast — 生命不足是否可以释放

check_precondition_by_key

function Ability.check_precondition_by_key(player: Player, ability_key: py.AbilityKey)
  -> is_meet: boolean

检查技能类型前置条件

@param player — 玩家

@param ability_key — 技能类型id (物编id)

@return is_meet — 技能类型前置条件是否满足

complete_cd

(method) Ability:complete_cd()

完成冷却

custom_event_manager

EventManager?

disable

(method) Ability:disable()

禁用技能

enable

(method) Ability:enable()

启用技能

event

fun(self: Ability, event: "技能-建造完成", callback: fun(trg: Trigger, data: EventParam.技能-建造完成)):Trigger

event_dispatch

(method) CustomEvent:event_dispatch(event_name: string, ...any)
  -> any
  2. any
  3. any
  4. any

发起自定义事件(回执模式),与通知模式不同,允许插入结算。 可以接受到事件的返回值,有多处注册事件时会按照注册顺序调用, 当任何事件回调返回了非 nil 的值后,后续触发器将不再调用。

Obj:event_on('获取', function (trigger,...)
    print('获取1')
    return 1
end)
Obj:event_on('获取', function (trigger,...)
    print('获取2')
    return 2
end)
 
local result = Obj:event_dispatch('获取')
 
print('结果为:', result)

以上代码会打印:

获取1
结果为:    1

event_dispatch_with_args

(method) CustomEvent:event_dispatch_with_args(event_name: string, args: any, ...any)
  -> any
  2. any
  3. any
  4. any

发起带事件参数的自定义事件(回执模式)

event_notify

(method) CustomEvent:event_notify(event_name: string, ...any)

发起自定义事件(通知模式),同一个对象身上只会有一个正在执行的事件, 当发生插入结算时,后面的事件会进入队列

Obj:event_on('获得', function ()
    print('触发获得')
    print('发起移除前')
    Obj:event_notify('移除') -- 实际业务中,可能你获得的buff把你自己杀死了,而死亡会清除buff
    print('发起移除后')
end)
 
Obj:event_on('移除', function ()
    print('触发移除')
end)
 
Obj:event_notify('获得')

这段代码会打印:

触发获得
发起移除前
发起移除后
触发移除

event_notify_with_args

(method) CustomEvent:event_notify_with_args(event_name: string, args: any[], ...any)

发起带事件参数的自定义事件(通知模式)

event_on

(method) CustomEvent:event_on(...any)
  -> Trigger

注册自定义事件,当触发时,会执行回调函数。

Obj:event_on('输入', function (trigger, ...)
    print('触发了输入事件', ...)
end)
 
Obj:event_notify('输入', '123', '456')

以上会打印:

触发了输入事件 123 456

注册时可以指定事件的参数:

Obj:event_on('输入', {'123'}, function (trigger, ...)
    print('触发了输入事件', ...)
end)
 
Obj:event_notify('输入', 1) -- 不能触发事件
Obj:event_notify_with_args('输入', {'123'}, 2) -- 可以触发事件
Obj:event_notify_with_args('输入', {'456'}, 3) -- 不能触发事件
Obj:event_notify_with_args('输入', {'123', '666'}, 4) -- 可以触发事件

get_by_handle

function Ability.get_by_handle(py_ability: py.Ability)
  -> ability: Ability?

通过py层的技能实例获取lua层的技能实例

@param py_ability — py层的技能实例

@return ability — 返回在lua层初始化后的lua层技能实例

get_by_id

function Ability.get_by_id(id: integer)
  -> Ability

get_cast_type

(method) Ability:get_cast_type()
  -> type: py.AbilityCastType

获取技能释放类型 AbilityCastType

@return type — 技能释放类型

get_cd

(method) Ability:get_cd()
  -> time: number

获取当前冷却时间

@return time — 当前冷却时间

get_charge_time

(method) Ability:get_charge_time()
  -> number

获取技能当前剩余充能时间

get_custom_event_manager

(method) CustomEvent:get_custom_event_manager()
  -> EventManager?

get_description

(method) Ability:get_description()
  -> string

获取技能描述

get_description_by_key

function Ability.get_description_by_key(ability_key: py.AbilityKey)
  -> des: string

根据技能的key获取技能描述

@return des — 描述

get_float_attr

(method) Ability:get_float_attr(key: string|y3.Const.AbilityFloatAttr)
  -> value: number

获取实数属性

@param key — 键值key

@return value — 值

get_float_attr_by_key

function Ability.get_float_attr_by_key(ability_key: py.AbilityKey, key: string)
  -> value: number

获取技能类型实数属性

请使用 y3.object.ability[ability_key].data 代替

@param ability_key — 技能类型id (物编id)

@param key — 键值key

@return value — 值

get_formula_attr_by_key

function Ability.get_formula_attr_by_key(ability_id: py.AbilityKey, attr_name: string, level: integer, stack_count: integer, unit_hp_max: number, unit_hp_cur: number)
  -> value: number

获取技能类型公式属性

@param ability_id — 技能类型id(物编id)

@param attr_name — 属性名称

@param level — 技能等级

@param stack_count — 技能层数

@param unit_hp_max — 单位最大生命

@param unit_hp_cur — 单位当前生命

@return value — 值

get_formula_kv

(method) Ability:get_formula_kv(key: string)
  -> value: number

获取技能公式类型的kv

@param key — 键值key

@return value — 值

get_icon

(method) Ability:get_icon()
  -> id: py.Texture

获取技能图标

@return id — 图片ID

get_icon_by_key

function Ability.get_icon_by_key(ability_key: py.AbilityKey)
  -> id: py.Texture

获取技能类型的icon图标的图片ID

@param ability_key — 技能类型id (物编id)

@return id — 图片ID

get_int_attr

(method) Ability:get_int_attr(key: string|y3.Const.AbilityIntAttr)
  -> value: number

获取整数属性

@param key — 键值key

@return value — 值

get_int_attr_by_key

function Ability.get_int_attr_by_key(ability_key: py.AbilityKey, key: string)
  -> value: integer

获取技能类型整数属性

请使用 y3.object.ability[ability_key].data 代替

@param ability_key — 技能类型id (物编id)

@param key — 键值key

@return value — 值

get_item

(method) Ability:get_item()
  -> Item?

获取技能绑定的物品(技能对象在哪个物品对象上)

get_key

(method) Ability:get_key()
  -> py.AbilityKey

get_level

(method) Ability:get_level()
  -> level: integer

获取技能等级

@return level — 等级

get_max_cd

(method) Ability:get_max_cd()
  -> number

获取技能最大CD

get_name

(method) Ability:get_name()
  -> string

get_name_by_key

function Ability.get_name_by_key(ability_key: py.AbilityKey)
  -> name: string

根据技能的key获取技能名字

@return name — 技能名字

get_owner

(method) Ability:get_owner()
  -> owner: Unit?

获取技能的拥有者

@return owner — 技能拥有者

get_player_attr_cost

(method) Ability:get_player_attr_cost(key: string)
  -> cost: number

获取技能消耗的玩家属性值

@param key — 属性key

@return cost — 玩家属性值

get_range

(method) Ability:get_range()
  -> number

获取技能施法范围

@return — 施法范围

get_skill_pointer

(method) Ability:get_skill_pointer()
  -> y3.Const.AbilityPointerType

获取技能的指示器类型

get_skill_type_pointer

function Ability.get_skill_type_pointer(name: py.AbilityKey)
  -> y3.Const.AbilityPointerType

获取技能类型的指示器类型

get_slot

(method) Ability:get_slot()
  -> index: y3.Const.AbilityIndex

获取技能所在技能位

@return index — 技能所在技能位

get_str_attr_by_key

function Ability.get_str_attr_by_key(ability_key: py.AbilityKey, key: py.AbilityStrAttr)
  -> str: string

获取技能类型字符串属性

请改用 y3.object.ability[ability_key].data 代替

@param ability_key — 技能类型id (物编id)

@param key — 键值key

@return str — 值

get_string_attr

(method) Ability:get_string_attr(key: string)
  -> value: string

获取字符串属性

@param key — 键值key

@return value — 值

get_target

(method) Ability:get_target(cast: integer)
  -> target: Destructible|Item|Point|Unit|nil

@param cast — 施法ID

@return target — 目标

get_type

(method) Ability:get_type()
  -> type: y3.Const.AbilityType

获取技能种类

@return type — 技能种类

handle

py.Ability

技能对象

has_tag

(method) Ability:has_tag(tag: string)
  -> boolean

是否具有标签

@param tag — 标签

hide_pointer

function Ability.hide_pointer(player: Player)

关闭技能指示器

@param player — 玩家

id

integer

is_autocast_enabled

(method) Ability:is_autocast_enabled()
  -> is_enabled: boolean

自动施法是否开启

@return is_enabled — 是否开启

is_cd_reduce

(method) Ability:is_cd_reduce()
  -> is_influenced: boolean

是否受冷却缩减影响

@return is_influenced — 是否受冷却缩减影响

is_cd_reduce_by_key

function Ability.is_cd_reduce_by_key(ability_key: py.AbilityKey)
  -> is_influenced: boolean

技能类型是否受冷却缩减影响

@param ability_key — 技能类型id (物编id)

@return is_influenced — 技能类型是否受冷却缩减影响

is_cost_hp_can_die

(method) Ability:is_cost_hp_can_die()
  -> is_cost: boolean

消耗生命是否会死亡

@return is_cost — 消耗生命是否会死亡

is_destroyed

(method) Ability:is_destroyed()
  -> boolean|unknown

is_exist

(method) Ability:is_exist()
  -> is_exist: boolean

是否存在

@return is_exist — 是否存在

key

integer?

kv_has

(method) KV:kv_has(key: string)
  -> boolean

是否拥有指定键值对。可以与ECA互通。

kv_key

string?

kv_load

(method) KV:kv_load(key: string, lua_type: 'boolean'|'integer'|'number'|'string'|'table'...(+1))
  -> any
lua_type:
    | 'boolean'
    | 'number'
    | 'integer'
    | 'string'
    | 'table'

kv_remove

(method) KV:kv_remove(key: any)

kv_save

(method) KV:kv_save(key: string, value: KV.SupportType)

保存自定义键值对。可以与ECA互通。

learn

(method) Ability:learn()

学习技能

object_event_manager

EventManager?

phandle

py.Ability

技能对象

pre_cast

(method) Ability:pre_cast(player: Player)

进入技能准备施法状态

@param player — 玩家

ref_manager

unknown

remove

(method) Ability:remove()

移除技能

remove_tag

(method) Ability:remove_tag(tag: string)

移除标签

@param tag — 标签

restart_cd

(method) Ability:restart_cd()

进入冷却

set_arrow_length

(method) Ability:set_arrow_length(value: number)

设置箭头/多段指示器长度

@param value — 长度

set_arrow_width

(method) Ability:set_arrow_width(value: number)

设置箭头/多段指示器宽度

@param value — 宽度

set_autocast

(method) Ability:set_autocast(enable: boolean)

开关自动施法

@param enable — 开关

set_build_rotate

(method) Ability:set_build_rotate(angle: number)

设置技能的建造朝向

@param angle — 角度

set_can_cast_when_hp_insufficient

(method) Ability:set_can_cast_when_hp_insufficient(can_cast: boolean)

设置生命不足时是否可以释放技能

@param can_cast — 是否可以释放

set_cd

(method) Ability:set_cd(value: number)

设置剩余冷却时间

@param value — 剩余冷却时间

set_cd_reduce

(method) Ability:set_cd_reduce(is_influenced: boolean)

设置技能是否受冷却缩减的影响

@param is_influenced — 属性key

set_charge_time

(method) Ability:set_charge_time(value: number)

设置技能剩余充能时间

@param value — 剩余充能时间

set_circle_radius

(method) Ability:set_circle_radius(value: number)

设置箭圆形指示器半径

@param value — 半径

set_description

(method) Ability:set_description(des: string)

设置技能描述

@param des — 描述

set_float_attr

(method) Ability:set_float_attr(key: string|y3.Const.AbilityFloatAttr, value: number)

设置实数属性

@param key — 属性key

@param value — 属性值

set_icon

(method) Ability:set_icon(icon_id: integer)

设置技能图标

@param icon_id — 图片id

set_int_attr

(method) Ability:set_int_attr(key: string|y3.Const.AbilityIntAttr, value: integer)

设置整数属性

@param key — 属性key

@param value — 属性值

set_is_cost_hp_can_die

(method) Ability:set_is_cost_hp_can_die(can_die: boolean)

设置消耗生命是否会死亡

@param can_die — 是否会死亡

set_level

(method) Ability:set_level(level: integer)

设置技能等级

@param level — 等级

set_max_cd

(method) Ability:set_max_cd(value: number)

设置技能最大CD

set_name

(method) Ability:set_name(name: string)

设置技能名字

@param name — 技能名字

set_normal_attack_preview_state

function Ability.set_normal_attack_preview_state(player: Player, state: boolean)

设置玩家的普攻预览状态

@param player — 玩家

@param state — 状态 开/关

set_player_attr_cost

(method) Ability:set_player_attr_cost(key: string, value: number)

设置技能玩家属性消耗

@param key — 属性key

@param value — 属性值

set_pointer_type

(method) Ability:set_pointer_type(type: y3.Const.AbilityPointerType)

设置技能指示器类型

@param type — 技能指示器类型

set_range

(method) Ability:set_range(value: number)

设置技能施法范围

@param value — 施法范围

set_sector_angle

(method) Ability:set_sector_angle(value: number)

设置扇形指示器夹角

@param value — 角度

set_sector_radius

(method) Ability:set_sector_radius(value: number)

设置扇形指示器半径

@param value — 半径

set_smart_cast_with_pointer

function Ability.set_smart_cast_with_pointer(player: Player, state: boolean)

设置玩家的指示器在智能施法时是否显示

@param player — 玩家

@param state — 状态 开/关

set_stack

(method) Ability:set_stack(value: integer)

设置充能层数

@param value — 层数

show_indicator

(method) Ability:show_indicator(player: Player)

显示技能指示器

@param player — 玩家

storage_all

(method) Storage:storage_all()
  -> table

获取存储数据的容器

storage_get

(method) Storage:storage_get(key: any)
  -> any

获取存储的值

storage_set

(method) Storage:storage_set(key: any, value: any)

存储任意值

storage_table

table

subscribe_event

(method) ObjectEvent:subscribe_event(event_name: string, ...any)
  -> any[]?
  2. Trigger.CallBack
  3. Unsubscribe: function