前言:前三期作业在GA绝对领域区,并且在置顶里的教程里有;以后会继续出作业和自测试题。

这期作业,分为中级和高级两种。中级作业考察函数的应用,能独立编写函数并能正确地运用参数传递;高级作业则是考察对数据绑定的掌握,如何构建一个写入和读取数据库。

中级作业和高级作业的主题都一样——群体技能,  就是山丘扔出N个锤子砸晕敌人,够简单吧!

要求写个函数,格式为

function Muti_Ability takes unit hero,unit TargetUnit,integer uid,integer ab,string oderID returns nothing


其中,hero是使用技能的单位,TargetUnit是技能目标单位,uid是辅助单位类型,ab是技能(可以是触发技能,也可以是自定义的辅助技能),orderID是技能的命令窜。

这个函数的用法是:
复制内容到剪贴板
代码:
Muti_Ability
事件
      单位 - 单位 开始施放一种技能
环境
    ((触发单位) 是 一个英雄) 等于 TRUE
    (使用的技能) 等于 妖术
动作
    设置 hero = (触发单位)
    设置 TargetUnit = (目标的单位)
    设置 uid = 阴影
    设置 ability = (使用的技能)
    设置 S = hex
    自定义: call Muti_Ability(udg_hero,udg_TargetUnit,udg_uid,integer udg_ability,udg_S)
或者
复制内容到剪贴板
代码:
Muti_Ability
事件
    单位 - 单位 开始施放一种技能
环境
    (使用的技能) 等于 妖术
动作
    设置 hero = (触发单位)
    设置 TargetUnit = (目标的单位)
    设置 uid = 阴影
    设置 ability = 妖术  辅助
    设置 S = hex
    自定义: call Muti_Ability(udg_hero,udg_TargetUnit,udg_uid,udg_S)
这个Muti_Ability函数可以用来做群体风暴之锤、群体暗影突袭和群体闪电链等,请完成这个Muti_Ability函数,并用它至少做三个群体技能,以.w3x的格式上交作业。


=======================高级作业===================
首先,完成上面的Muti_Ability函数。

构建个库,使用函数将数据输入缓存,如下面的Muti_Ability_uid_order

function Muti_Ability_uid_order takes integer uid,integer ab,string oderID returns nothing
      call StoreString(udg_GC,I2S(ab),"Mutu_ability_unitID",uid)
      call StoreString(udg_GC,I2S(ab),"Mutu_ability_order",oderID)
endfunction



你也可以用自己习惯的自定义函数输入数据,也可以采用上面的Muti_Ability_uid_order。

(以上就是所谓的数据绑定,将辅助单位类型,命令窜跟技能绑定。)

然后,动态注册事件,创建触发器,事件为“任意单位使用技能”,条件为“GetStoredString(udg_GC,I2S(GetSpellAbilityId),"Mutu_ability_order")不为null”(也可以判断"Mutu_ability_unitID"这项是否为0),动作是从缓存中读出辅助单位类型和命令窜,调用前面的Muti_Ability函数。

至少用Muti_Ability_uid_order注册三个群体技能,然后创建上述触发器。同样要求以.w3x格式提交作业。