WOW8论坛

 找回密码
 立即注册
搜索
热搜: 地形 技能 Lua
查看: 83|回复: 3

[zinc]H2I与I2H的乖巧模式,不利用RB BUG,不用哈希表

[复制链接]

注册会员

发表于 2018-5-24 15:47:55 | 显示全部楼层 |阅读模式
本帖最后由 nef 于 2018-5-26 10:06 编辑

[Jass] 纯文本查看 复制代码
// 单位变整数
integer ref = Unit2Int(GetTriggerUnit());

// 整数变单位,可读取无数次
unit tmp = IntRefUnit(ref);

// 整数变单位,只可使用一次
// 使用完Int2Unit之后,ref将不对应任何单位,Int2Unit(ref)和IntRefUnit(ref)将返回null
unit u = Int2Unit(ref);


[Jass] 纯文本查看 复制代码
//! zinc
library Handle2Integer {
    constant integer MAX_INSTANCES = 32767;

    //! textmacro WriteHandle2Int takes TYPE, FTYPE
    $TYPE$ $TYPE$objs[];
    integer $TYPE$table[];
    integer $TYPE$freed = 0;
    integer $TYPE$count = 0;

    public function $FTYPE$2Int($TYPE$ u) -> integer {
        integer ref = $TYPE$freed;
        if (ref != 0) {
            $TYPE$freed = $TYPE$table[ref];
        } else {
            $TYPE$count += 1;
            ref = $TYPE$count;
        }
        if (ref > MAX_INSTANCES) {
            return 0;
        }
        $TYPE$table[ref] = -1;
        $TYPE$objs[ref] = u;
        return ref;
    }

    public function Int2$FTYPE$(integer ref) -> $TYPE$ {
        if (ref == 0) {
            return null;
        } else if ($TYPE$table[ref] != -1) {
            return null;
        }
        $TYPE$table[ref] = $TYPE$freed;
        $TYPE$freed = ref;
        return $TYPE$objs[ref];
    }

    public function IntRef$FTYPE$(integer ref) -> $TYPE$ {
        if (ref == 0) {
            return null;
        } else if ($TYPE$table[ref] != -1) {
            return null;
        }
        return $TYPE$objs[ref];
    }
    //! endtextmacro

    //! runtextmacro WriteHandle2Int("unit", "Unit")
    //! runtextmacro WriteHandle2Int("effect", "Eff")

}
//! endzinc



看文本宏,根据需要实现自己要的
回复

使用道具 举报

发表于 2018-5-24 15:50:05 | 显示全部楼层
乖巧模式是个什么模式,求阐述一下定义
回复 支持 反对

使用道具 举报

注册会员

 楼主| 发表于 2018-5-24 15:51:33 | 显示全部楼层
皇家骑士 发表于 2018-5-24 15:50
乖巧模式是个什么模式,求阐述一下定义

当你看到H2I I2H之类的,第一反应一定是:

又在利用bug吧,是不是又是什么邪道玩法

然而我并不是
回复 支持 反对

使用道具 举报

发表于 2018-5-24 15:59:08 | 显示全部楼层
nef 发表于 2018-5-24 15:51
当你看到H2I I2H之类的,第一反应一定是:

又在利用bug吧,是不是又是什么邪道玩法

有道理,这样子看起来的确很乖巧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|WOW8论坛  

GMT+8, 2018-8-18 10:58 , Processed in 0.062841 second(s), 4 queries , File On.

WOW8 © 2018

Powered by Discuz! X3.3

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