找回密码
 点一下
查看: 1355|回复: 2

[不是广告]一个filter小系统

[复制链接]
发表于 2014-5-28 13:10:45 | 显示全部楼层 |阅读模式
[jass]
library Filter
//Filter系统
/*提供一个通用的filter解决方案,包括包含参数的filter示例.
示例1:创建一个filter
参考function Alive 调用方式见test函数的*2
示例2:创建一个filter
参考function Filter_UnDummy 调用方式见test函数的*3
示例3:创建一个包含参数的filter
参考function Filter_Enemy 调用方式见test函数的*1
示例4:创建一个复数功能的filter
参考function Filter_Enemy_Alive
*/
    //单位组选取存活的单位
    public function Alive takes nothing returns boolean
        return IsUnitType(GetFilterUnit(),UNIT_TYPE_DEAD)==false
    endfunction
   
    //单位组选取非蝗虫单位
    private function UnDummy takes nothing returns boolean
        return GetUnitAbilityLevel(GetFilterUnit(),'Aloc')==0
    endfunction
    function Filter_UnDummy takes nothing returns boolexpr
        return Filter(function UnDummy)
    endfunction
   
    //单位组选取单位a的敌军单位
    globals
        private unit u
    endglobals
    private function Enemy takes nothing returns boolean
        return IsUnitEnemy(GetFilterUnit(),GetOwningPlayer(u))
    endfunction
    function Filter_Enemy takes unit a returns boolexpr
        set u=a
        return Filter(function Enemy)
    endfunction
   
    //单位组选取存活的敌军
    function Filter_Enemy_Alive takes unit a returns boolexpr
        return And(Filter_Enemy(a),function Alive)
    endfunction
endlibrary
    function test takes nothing returns nothing
        call GroupEnumUnitsInRange(CreateGroup(),0,0,0,Filter_Enemy(GetTriggerUnit()))//*1
        call GroupEnumUnitsInRect(CreateGroup(),bj_mapInitialPlayableArea,function Filter_Alive)//*2
        call TriggerRegisterPlayerUnitEvent(CreateTrigger(),Player(0),EVENT_PLAYER_UNIT_DEATH,Filter_UnDummy())//*3
    endfunction
[/jass]
发表于 2014-6-16 10:03:48 | 显示全部楼层
不是广告好评

点评

清广告好评  详情 回复 发表于 2014-6-16 10:43
回复

使用道具 举报

 楼主| 发表于 2014-6-16 10:43:39 | 显示全部楼层

清广告好评
回复 1 0

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-12-4 01:29 , Processed in 0.094619 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表