找回密码
 点一下
查看: 1789|回复: 14

触发器条件中无法使用缓存?

[复制链接]
发表于 2008-9-29 02:07:09 | 显示全部楼层 |阅读模式
晚上在做一个系统时,在一个触发器中的条件中调取缓存中的实数,发现每次的结果都是0,开始百思不得其解,后来用全部变量来传递数据时,又一切正常了。
然后似乎得到一个结论:触发器的条件代码中似乎无法使用缓存?不知道各位有没有相同的经历?

如果真的是这样的话,相当郁闷
发表于 2008-9-29 02:52:38 | 显示全部楼层
能用
回复

使用道具 举报

发表于 2008-9-29 07:59:55 | 显示全部楼层
同上
回复

使用道具 举报

发表于 2008-9-29 10:06:47 | 显示全部楼层
继续同上,看下是不是missionkey和key弄反了,或者是不是缓存没有初始化过
回复

使用道具 举报

 楼主| 发表于 2008-9-29 10:37:21 | 显示全部楼层
弄反是绝对不会的啊~~~缓存也初始化了~~~~~~~~~~唉   难道我遇到莫名的BUG了?稍后把代码放上来看看吧
回复

使用道具 举报

 楼主| 发表于 2008-9-29 10:52:37 | 显示全部楼层
[jass]//===========================================================================
//检测物品拖拽到另一类物品的事件
function ItemEventDragOntoFilter takes nothing returns boolean
    local integer DragTo = GetIssuedOrderId()- 852002
    local integer ItemType = GetStoredInteger(udg_gameCache,I2S(H2I(GetTriggeringTrigger())),"ItemTypeDragTo")
    call BJDebugMsg(I2S(ItemType)) //每次屏幕打印却都是0
    if DragTo>=0 and DragTo<=5 and GetItemTypeId(UnitItemInSlot(GetTriggerUnit(),DragTo)) == ItemType then
        return true
    endif
    return false
endfunction

function TriggerRegisterItemEventDragOnto takes trigger trig,integer TargetItemType returns nothing
    call TriggerRegisterAnyUnitEventBJ(trig,EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER)
    call StoreInteger(udg_gameCache,I2S(H2I(trig)),"ItemTypeDragTo",TargetItemType)
   call TriggerAddCondition(trig,Condition(function ItemEventDragOntoFilter))
endfunction[/jass]

想创建一种“物品拖拽到一类物品上”的事件,先用缓存讲物品类型限制绑定到触发器中,然后在条件中加以判断
却发现每次用BJDebugMsg()都只能取得0~~~
改用全局变量传递,才发现可以代码可以达到目标~~~
不知道是哪里出问题了
回复

使用道具 举报

发表于 2008-9-29 11:14:11 | 显示全部楼层
那你的函数测试了一下,完全有效
回复

使用道具 举报

 楼主| 发表于 2008-9-29 11:38:08 | 显示全部楼层
有效吗?
我的地图怎样都无效。。。。相当郁闷。。。。。难道是WE的特殊BUG?某些代码保存时没有重建?
回复

使用道具 举报

发表于 2008-9-29 11:39:51 | 显示全部楼层
我仍然怀疑你没有初始化缓存

t.w3x (18 KB, 下载次数: 9)

附上正常的演示图
回复

使用道具 举报

 楼主| 发表于 2008-9-29 11:51:19 | 显示全部楼层
楼上的演示确实有效

我的地图的确是初始化了缓存的,如下~~~
捕获.JPG
实在不明白是哪里出了问题~~

谢谢版主的热心解答~~
回复

使用道具 举报

发表于 2008-9-29 11:52:45 | 显示全部楼层
额额,的确初始化过了呢………………

于是就不晓得了,可能把地图传上来看下才有可能知道了唉~~
回复

使用道具 举报

 楼主| 发表于 2008-9-29 12:02:17 | 显示全部楼层
地图是个很庞大的未完成品,不好上传的~~~~~
唉,多谢BZ大大了
看来只好摈弃这个函数了
回复

使用道具 举报

发表于 2008-9-29 14:09:36 | 显示全部楼层
可以的..吧..
你最好把代码发一下
回复

使用道具 举报

发表于 2008-9-29 14:47:36 | 显示全部楼层
看到你的代码了
刚刚测试了一下
没有任何问题
可以传递
并且 显示不是0

分析了下
应该是LZ缓存建立有问题

还是LZ RPWT?
我把测试地图放上来
你按下ESC就能看到效果

测试.w3x

18 KB, 下载次数: 9

测试地图

回复

使用道具 举报

 楼主| 发表于 2008-9-29 15:19:13 | 显示全部楼层
可能只能用RPWT来形容了~~~
我的缓存应该没问题的,因为在别的地方是使用缓存是可以的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-25 01:04 , Processed in 0.061898 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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