Dota 2 Workshop Tools/Scripting/API/Global.LinkLuaModifier: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
Line 9: Line 9:


''链接一个已经用lua脚本定义的Modifier(类class)。如果这个Modifier脚本在根目录,第二个参数(文件路径)可以省略'
''链接一个已经用lua脚本定义的Modifier(类class)。如果这个Modifier脚本在根目录,第二个参数(文件路径)可以省略'
例:我们现在要创造一个Buff,名字叫modifier_evo_buff用来直接给单位加一个Buff,那么我们新建立了一个modifier_evo_buff.lua文件,文件内容
例:我们现在要创造一个Buff,名字叫modifier_evo_buff用来直接给单位加一个Buff,那么我们新建立了一个modifier_evo_buff.lua文件放在hero文件夹下,文件内容
<source lang="lua">
<source lang="lua">
--类名,跟文件名一致
modifier_evo_buff = class({})
modifier_evo_buff = class({})
--返回该Buff图标资源名(这里用亚巴顿的第一个技能图标)
function modifier_evo_buff:GetTexture(  )
function modifier_evo_buff:GetTexture(  )
     return "abaddon_death_coil"  
     return "abaddon_death_coil"  
end
end
 
--该Buff携带的效果
function modifier_evo_buff:GetEffectName()
function modifier_evo_buff:GetEffectName()
     return "particles/generic_gameplay/generic_stunned.vpcf"
     return "particles/generic_gameplay/generic_stunned.vpcf"
end
end
 
--该Buff效果依附的位置
function modifier_evo_buff:GetEffectAttachType()
function modifier_evo_buff:GetEffectAttachType()
     return PATTACH_OVERHEAD_FOLLOW
     return PATTACH_OVERHEAD_FOLLOW
end
end
--其他的复写函数请参考 API:CDOTA_Modifier_Lua
</source>
接下来再调用之前,声明链接(加载)这个Modifier
<source lang="lua">
--参数1 Modifier名称(在本地化资源文本里,引动的就是这个,添加Modifier用的也是这个)
--参数2 Modifier的lua文件所在的位置
--参数3 Modifier控制类型
LinkLuaModifier("modifier_evo_buff","hero/modifier_evo_buff", LUA_MODIFIER_MOTION_NONE)
</source>
</source>
'
声明完就可以为单位添加一个这个Modifier了
 
 
 
;Example
<source lang="lua">
<source lang="lua">
LinkLuaModifier( "modifier_pudge_meat_hook", LUA_MODIFIER_MOTION_HORIZONTAL )
--entity为单位句柄
unit:AddNewModifier(source, ability, "modifier_pudge_meat_hook", {})
--技能为空
--Modifier名称(上面注册的那个)
--其他参数列表(这里添加了一个永久持续的Modifier)
entity:AddNewModifier(entity, nil, "modifier_evo_buff", { duration = -1})
</source>
</source>



Revision as of 13:12, 7 November 2015

Note.pngNote: This page is automatically generated. Any changes may be overwritten

Function Description

void LinkLuaModifier(string modifier_name, string file_path, int motion_controller_type)

链接一个已经用lua脚本定义的Modifier(类class)。如果这个Modifier脚本在根目录,第二个参数(文件路径)可以省略' 例:我们现在要创造一个Buff,名字叫modifier_evo_buff用来直接给单位加一个Buff,那么我们新建立了一个modifier_evo_buff.lua文件放在hero文件夹下,文件内容

--类名,跟文件名一致
modifier_evo_buff = class({})
--返回该Buff图标资源名(这里用亚巴顿的第一个技能图标)
function modifier_evo_buff:GetTexture(  )
    return "abaddon_death_coil" 
end
--该Buff携带的效果
function modifier_evo_buff:GetEffectName()
    return "particles/generic_gameplay/generic_stunned.vpcf"
end
--该Buff效果依附的位置
function modifier_evo_buff:GetEffectAttachType()
    return PATTACH_OVERHEAD_FOLLOW
end

--其他的复写函数请参考 API:CDOTA_Modifier_Lua

接下来再调用之前,声明链接(加载)这个Modifier

--参数1 Modifier名称(在本地化资源文本里,引动的就是这个,添加Modifier用的也是这个)
--参数2 Modifier的lua文件所在的位置
--参数3 Modifier控制类型
LinkLuaModifier("modifier_evo_buff","hero/modifier_evo_buff", LUA_MODIFIER_MOTION_NONE)

声明完就可以为单位添加一个这个Modifier了

--entity为单位句柄
--技能为空
--Modifier名称(上面注册的那个)
--其他参数列表(这里添加了一个永久持续的Modifier)
entity:AddNewModifier(entity, nil, "modifier_evo_buff", { duration = -1})

Parameters

Type Name Description
string modifier_name Name to be registered for the modifier, to be used when adding it.
string file_path File path of the .lua file containing the code for the modifier.
int motion_controller_type The type of motion controller(s) to be registered by this modifier