|
发表于 2008-6-26 14:18:39
|
显示全部楼层
…………………………………………………………………………
队列是什么意思???
是命令运行的顺序吗??
(1 attack>2 stop>…………)
是这样吗?
难道“晕”是放在单位的命令里的吗?
很难想象是“别人(山丘)叫单位(大法)发布『晕了自己,别动,死了都别动』的命令”,而大法却言听计从地“把自己调整到一个舒服的位置(重置动画),任由山丘的锤子拍在身上……………………”
但是大法死亡时的动作也是放在队列里的吗?
还是说,单位只要生命<0,那么立刻清除单位身上的所有Buff,并给单位发布死亡命令?转换单位的模型到骨头状态?
Jass的UnitRemoveAbility移除Buff效果并不好,总是会再存在1妙后图标才没有。如果能得到单位死亡命令中瞬间移除所有Buff和对应图标的命令,那无数高人就会………………
而且如果瞬间移除所有Buff和对应图标的命令是循环:瞬间移除单位的指定Buff,估计所有人都会………………………………
当然,如果死亡命令是这样的:
function Death takes unit u returns nothing
call UnitAddAbility(u,『蝗虫技能ID』)
call UnitRemoveAbility……………………………………
endfunction
那大家…………就当我没说过这话………………………………………………
跑题了…………………………
还有,单位设置:命令ID的禁止。比如说单位的攻击设置为无,那么在单位自己就会禁止任何对它发布的“attack”命令。而单位的设置是存在地图的缓存中的一个缓存中的。而“禁止任何对它发布的“attack”命令”则是作为一个Boolean存在的。如果:BLIZZARD的函数是:
function attack takes unit u returns nothing
if GetStoredBoolean(udg_GC,GetUnitTypeId(u),"DIS猜的"+『发布的命令ID(假晕ID)』)==false then
call IssueOrderTarget(u,『晕的ID(应该是真晕的Id,效果是晕单位),这里只是举例,应该是每个特殊的命令ID都会在地图初始化是存储一个对应的真命令Id』)
else
endif
endfunction
假『晕』Id是技能发出的,真『晕』技能是系统发出的(无法抵抗),也就是说,技能发
出的所有关于『晕』的命令——是假『晕』命令,需要通过条件判定(目标单位有没有无
敌的状态呀等)并成立后,向目标单位发出真『晕』命令,真『晕』命令是系统直接放
行的(比如前缀是某个特定的数或字母,系统可以通过SubString(String)或别的比如÷(Integer)等办法判定,或直接过上头的函数【因为真『晕』在初始化时不储存Boolean,所以默认为False】)。然后才有“把自己调整到一个舒服的位置(重置动画),任由山丘的锤子拍在身上……………………”的这一幕的。
也就是说:每个命令的Id都有两个:真和假(true and false)。
假命令是过系统判断的。
真命令是发效果的。
说到这里大家都有想扁我的冲动了吧(小子你丫居然敢猜BLIZZARD的源代码,是不是不想活了!!而且还写这么长!!!!!!!!!!!)…………其实不然,我说的函数不仅与楼主的不冲突,而且————————
大家可以用call StoreBoolean(………………………………,true)来让命令Id无效果!
原因:仔细看上面的函数。
也就是:
事件——任意单位“开始施法”
条件——无
动作——call StoreBoolean(udg_Data,GetUnitTypeId(GetTriggerUnit()),"DIS……(说实话我也不知道)",true)
事件——任意单位“施法结束”
条件——无
动作——call StoreBoolean(udg_Data,GetUnitTypeId(GetTriggerUnit()),"DIS……(说实话我也不知道)",false)
这样的话,会实现:任意单位施法的全过程时间段中,这个单位的类型的所有的单位会免疫……的命令。
举例:
一个步兵放180妙的通魔技能,在这个时间段里,山丘用锤子(技能的)K步兵,只出伤害,不出晕………………(山丘我对不起你…………)
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
以上为我猜想,如有强人发现真的是这样的话,告诉我就可以了。
毕竟LZ的比我的好多了…………………… |
|