|
楼主 |
发表于 2006-12-26 21:19:41
|
显示全部楼层
GW的办法-0-相当烦琐呐 一是要创造单位 二是要搜索单位 这个过程-0~ 特别是第二步 还需要创建一个条件函数
可能是由于当时没有USERDADTA可以利用的原因吧?这个功能MS是1.13时加入的?
要制作物品栏的话只要用一个arrayitem变量来储存这些物品就可以了 如果是这样的话只需要知道是哪个玩家的哪个英雄需要第几个物品就可以了 只需要
[jass]
//存入
function SaveItem takes item itSource, integer iOwn, integer iHero, integer iItem returns nothing
set items[AryD3D( CmaxHero, CmaxItem, iItem, iHero, iOwn)] = itSource
call SetItemPositionLoc( itSource, ClItemDepository)
return
endfunction
//取出
function LoadItem takes unit uAim, integer iOwn, integer iHero, integer iItem returns nothing
call UnitAddItemSwapped( items[AryD3D( CmaxHero, CmaxItem, iItem, iHero, iOwn)], uAim)
return
endfunction
[/jass]
其中CmaxHero为在开始定义的常数 即第二维下标, CmaxItem为第三维下标, ClItemDepository 为存放物品的隐秘地点
仅仅只需要那么两个函数就可以轻易并且快速的完成物品的存取 当然物品的最大数量自然得<8192
因此N维数组的利用可以大大的方便编程 现在仅仅是3维 那么4维5维数组的价值呢?期待ing
过几天偶有空了还会写一个求多维数组公式的小程序 这样就能避免总是记忆复杂的表达式:P |
|