|
请高手进来看看
情况是这样的,需要在枚举单位组中的单位时,传递过去一个参数,以便进一步操作。但是,不知道如何获得当前的组,不知道有没有GetCurrentGroup这样的函数(类似GetTriggeringTriger()函数)。
为了把问题描述清楚,举个例子,比如要创建一些单位,把这些单位放到某个单位组中,然后枚举这些单位,最后将所枚举的单位分别移动到指定的点,问题就来啦,请参照下面的代码:
[codes=JASS]
//枚举单位组中的单位
function OnEnumUnitFromGroup takes nothing return nothing
local location locPointTaget //指定的点
//指定的点locPointTaget必须有外部函数设定。
//本来想用GameCache,但是不知道如何设定关键字,应该型如这样:
//local group g = GetCurrentGroup() //但是好像没有GetCurrentGroup这样的函数。
//set locPointTaget = I2LOC(GetStoredInteger( theGameCache(), I2S(H2I(g)), "Group"))
//将枚举到的单位移动到目标点
call SetUnitPositionLoc ( GetEnumUnit(), locPointTaget )
endfunction
//请先从这里开始看
function SomeTrigger_Action takes nothing return nothing
local unit unitCreate
local group gCreate = CreateGroup()
local location locPointTaget
//这里是其他一些代码
//创建20个某种单位并且将它加入到特定的组中
local int i = 0
loop
exitwhen i > 21
set unitCreate = CreateUnitAtLoc(...........)
call GroupAddUnit( gCreate, unitCreate )
set i = i + 1
endloop
//这里是其他一些代码。其中,具有计算目标点locPointTaget的方法。
//下面这种方式,好像行不通。
//call StroedInteger( theGameCache(), I2S(H2I( gCreate )), "Group", H2I( locPointTaget ))
//开始枚举组中的单位。
call ForGroup( gCreate, function OnEnumUnitFromGroup )
endfunction
[/codes] |
|