|
发表于 2010-8-15 09:21:35
|
显示全部楼层
10楼的代码我依然是有疑问呀。
刚才自己在图里面试验了一下,下面是代码,随便写的。
[codes=galaxy]
UIDisplayMessage(PlayerGroupAll(), c_messageAreaChat, IntToText(UnitGetPropertyInt(EventUnit(), 24, true)));
UIDisplayMessage(PlayerGroupAll(), c_messageAreaChat, IntToText(UnitGetPropertyInt(EventUnit(), 24, true)/64));
lv_i=0;
while(EventUnit()!=UnitFromId(lv_i)){
lv_i=lv_i+1;
}
UIDisplayMessage(PlayerGroupAll(), c_messageAreaChat, IntToText(lv_i));
UIDisplayMessage(PlayerGroupAll(), c_messageAreaChat, StringToText("==============="));
触发条件是选取单位。
[/codes]
24号数据得到的值都是64的倍数,从0开始递增。和UnitFromId 中的id貌似没什么特殊的联系(我能发现的就只是id最大的一个单位其24号数据是0,也可能是凑巧。两者的数值貌似每次装载地图都不会发生变化),id的特性我只知道一点点,就是它是按照单位摆放上地图的次序递增的,也就是第一个摆上的一般就是id=1了。
下面就是问题了,我在地图装载完之后再创建新的单位,再次运行上面的代码,提示函数执行时间过长。于是我把lv_i的初始值该为-1000,依然发生同样错误,lv_i直接跑到了一个相当大的数了...难道应该是更大的负数?还是说我的测试方法错了。
另外再次求24号数据的解释,到底是啥捏?
===================================
补充下吧,这个24号数据如wetosc 所描述的,更像是单位的唯一标识。对于新建的单位,其数值是以64为基数递增的。只不过由这个数值转换为单位类型的api倒是没有...
好了,先去休息了。 |
|