|
BLOG文章地址:http://mosq.blog.sohu.com/52144704.html

玩家自制魔兽3技能(模仿奇迹的地狱火)
魔兽3中无论是基础的攻击,还是拾取物品,扔掉物品等,甚至包括英雄本身,也是一个技能(Ability),这些技能都可以通过游戏的脚本进行控制。你可以使用UnitRemoveAbility这个指令删除任何一个在技能数据表中的技能,当你删除了单位的“攻击”技能后,单位就会无法攻击;当你删除了商店的“出售物品”技能后,商店就失去了卖东西的功能;当你删除英雄的“英雄”技能后,英雄可能就会变为普通的单位。
[B]魔兽3的技能数据表下载:[/B] http://rair.cn/wenziding/WarCraftIII_AbilityData.xls
* ability是一种数据类型,在脚本中可以存在这种类型的变量。申明局部变量的格式一般是:local 数据类型 变量名,例子:local integer a ,也可以:local integer a = 1,在申明变量的同时给变量赋值。
* unit也是一种数据类型,unit代表着游戏中所有的单位,包括建筑、英雄等等。注意:unit是单位在游戏中的ID,两个相同类型的单位,ID不一样,unit则是这个ID的指向。
控制技能的脚本API函数主要功能一览:
* 将字符串形式的技能的ID转换为数值型ID。
AbilityId takes string abilityIdString returns integer
* 和上面相反。
AbilityId2String takes integer abilityId returns string
* 获取某个技能的效果effect,技能效果指的是持续性的效果或是短暂性的技能效果。
GetAbilityEffect takes string abilityString,effecttype t,integer index returns string
GetAbilityEffectById takes integer abilityId,effecttype t,integer index returns string
* 获取某个技能的名称。
GetObjectName takes integer objectId returns string //这个函数比较奇怪,可以获得很多种实体的名称。
本地函数:
function GetAbilityName takes integer abilcode returns string
return GetObjectName(abilcode)
endfunction
* 获取某个技能的声音文件路径。
GetAbilitySound takes string abilityString,soundtype t returns string
* 当触发器是与技能有关时,获取正在触发的技能或技能ID。
GetSpellAbility takes nothing returns ability
GetSpellAbilityId takes nothing returns integer
* 当触发器是与单位施放技能有关时,获取正在施放技能的单位。
GetSpellAbilityUnit takes nothing returns unit
* 获得某个单位的某个技能的技能等级。
GetUnitAbilityLevel takes unit whichUnit,integer abilcode returns integer
* 设置某个单位的某个技能可以使用或不可以使用。注:当设置为不可使用时,该技能依然存在于单位身上,技能等级和技能的冷却时间在恢复后,都会保持正常。只是技能在不可用时,在UI是看不到技能的图标的。这个和删除技能有一定的区别。
SetPlayerAbilityAvailable takes player whichPlayer,integer abilid,boolean avail returns nothing
* 设置某个单位的某个技能的等级。
SetUnitAbilityLevel takes unit whichUnit,integer abilcode,integer level returns integer
* 给某个单位增加某个技能技能。
UnitAddAbility takes unit whichUnit,integer abilityId returns boolean
* 删除某个单位的某个技能。
UnitRemoveAbility takes unit whichUnit,integer abilityId returns boolean
* 增加某个单位的某个技能的等级。
IncUnitAbilityLevel takes unit whichUnit,integer abilcode returns integer
* 减少某个单位的某个技能的等级。
DecUnitAbilityLevel takes unit whichUnit,integer abilcode returns integer
* 激活或关闭某个单位的某个技能。相对于那些能够自动释放的技能所设定的函数。
UnitMakeAbilityPermanent takes unit whichUnit,boolean permanent,integer abilityId returns boolean
|
|