|
发表于 2009-7-15 13:35:40
|
显示全部楼层
条件错了。
WC3的判断是这样。物品获得的事件下,任何的判断都认为(被操作物品)已经被(触发单位)持有。
也就是说,单位是拿到物品后,才会进行触发判断。
(被操作物品) 不等于 ((触发单位) 所持有的 ((被操作物品) 的类型))
这句话有问题
懒的写,直接贴下我自己写的物品叠加,一直很稳定,应该能说明问题
[trigger]
NQZ WPDJ
    事件
        单位 - 任意单位 获得物品
    条件
        任一条件成立
            条件
                ((被操作物品) 的类型) 等于 生命石
                ((被操作物品) 的类型) 等于 智慧石
                ((被操作物品) 的类型) 等于 法术石
                ((被操作物品) 的类型) 等于 灵魂碎片
                ((被操作物品) 的类型) 等于 火腿
                ((被操作物品) 的类型) 等于 泉水
                ((被操作物品) 的类型) 等于 重生十字章
    动作
        设置循环整数B的值为 0
        For循环整数A从 1 到 6, 做动作
            Loop - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        (((触发单位) 物品栏第 循环整数A [R] 格的物品) 的类型) 等于 ((被操作物品) 的类型)
                    Then - 动作
                        设置循环整数B的值为 (循环整数B [R] + 1)
                    Else - 动作
        如果所有条件成立则做动作1,否则做动作2
            If - 条件
                循环整数B [R] 等于 2
            Then - 动作
                For循环整数A从 1 到 6, 做动作
                    Loop - 动作
                        如果所有条件成立则做动作1,否则做动作2
                            If - 条件
                                (((触发单位) 物品栏第 循环整数A [R] 格的物品) 的类型) 等于 ((被操作物品) 的类型)
                                ((触发单位) 物品栏第 循环整数A [R] 格的物品) 不等于 (被操作物品)
                            Then - 动作
                                物品 - 设置 ((触发单位) 物品栏第 循环整数A [R] 格的物品) 的使用次数为 ((((触发单位) 物品栏第 循环整数A [R] 格的物品) 的使用次数) + ((被操作物品) 的使用次数))
                            Else - 动作
                物品 - 删除 (被操作物品)
                设置循环整数B的值为 0
            Else - 动作
[/trigger]
我的代码里把循环B作为计数,计算包括(其实在身上但看不见的当前被操作物)在内的所有该类型物数量
如果本身就有,那就执行叠加计算
这个叠加代码还有个附的触发,是解决当物品全满的时候,购买/拾取时候的叠加问题。
我是图快,用循环A/B做的,当然建议用JASS或自定义来取代AB。 |
|