|
发表于 2007-12-4 22:58:39
|
显示全部楼层
那就说说这怪的地方吧.
1.只为玩家3到玩家12注册了触发,没有给玩家1和玩家2注册.
2.那个条件函数,多数人的写法会是:
[codes=jass]
function ItemCompoundEstimate takes nothing returns nothing
if GetItemTypeId(GetManipulatedItem())=='I020' then
call CompoundItemEstimate(...)
endif
endfunction
[/codes]
因为条件函数可以不必返回boolean类型.
3.
[codes=jass]
call DestroyEffect(AddSpecialEffect(...))
[/codes]
这个地方,可以创建在单位身上的特效的,创建在点上反而不好,有的单位是飞行的,或是长得很大,创建在点上,极有可能会不美观. (同一个点,可能是山丘的头上,也在恶魔猎手的腰上,或是在一个鸟的脚下)
4.
使用一个没有初使化的声音
5.
call DisplayTimedTextToPlayer(GetOwningPlayer(Unia),0.51,0,10,"")
这个位置好像是屏幕中间吧. (怎么不写一点什么吧,比如"合成失败"之类的)
6.
其实,这个检查也不是很麻烦.
比如6个物品合成1个,(记为a,b,c,d,e)
那么,先取6个boolean型变量(ai,bi,ci,di,ei),都为false. 再取一个boolean型变量X,为True
之后呢,对每一个合成所须物品,从物品栏中搜索,如果找到了,就把相就的变量位记为true,比如a物品在物品栏3找到,就把ci记为true. 表示这个物品被使用了.
如果合成所须的某个物品没有找到,那么把X设为false,跳出循环.
在循环外面,先看X的值,如果X是True的话,说明循环正常结束,所有所须物品都找到了,那就把所有被标记为true的物品栏物品删掉,再添加合成后的物品.
如果X的值是False,说明是被跳出循环的,也就是说,合成条件不符,那么返回金钱就可以了.
而像你这样做,明显没有处理的就是同类合成.
比如dota中的法术头盔,是用 1个铁盔,1个流浪斗篷,2个回复戒指 合成出来的.
而按你的检查方案,身上有 1个铁盔,1个流浪斗篷,1个回复戒指 也会合成出来的.
而且,身上有:1个铁盔,1个流浪斗篷,4个回复戒指 ,还会在合成成功的情况下,把4个回复戒指全部删掉
晚上头晕,看错,楼主的方法没有问题. |
|