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

查看: 172|回复: 3
[复制链接]

nef 发表于 2018-5-24 15:47:55 | 显示全部楼层

欢迎访问本论坛,注册你的账号并登录,来与我们交流吧!

欢迎 登录 与我们交流!没有帐号?立即注册

x
本帖最后由 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 | 显示全部楼层
乖巧模式是个什么模式,求阐述一下定义
回复 支持 反对

使用道具 举报

 楼主| nef 发表于 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吧,是不是又是什么邪道玩法

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

使用道具 举报

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

本版积分规则

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