找回密码
 点一下
查看: 2145|回复: 7

关于单位组(group),值传送的问题

[复制链接]
发表于 2008-2-28 21:20:34 | 显示全部楼层 |阅读模式
请高手进来看看

情况是这样的,需要在枚举单位组中的单位时,传递过去一个参数,以便进一步操作。但是,不知道如何获得当前的组,不知道有没有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]
 楼主| 发表于 2008-2-29 00:21:57 | 显示全部楼层
期待。。。。。
回复

使用道具 举报

发表于 2008-2-29 11:18:47 | 显示全部楼层
你不是在疑难区发过同样的帖子了嘛?~~

说了没有这种函数了嘛~~
回复

使用道具 举报

发表于 2008-2-29 12:30:15 | 显示全部楼层
可以用fristofgroup
然后加call XXX(XX,XX)来传递..
回复

使用道具 举报

 楼主| 发表于 2008-2-29 16:53:47 | 显示全部楼层
调用FirsttofGroup必须是在创建Group之后,但是,我在调用Pick every units In Range 之前,组还没有创建。怎么能以Firsttofgroup为关键字写数据那??
回复

使用道具 举报

发表于 2008-3-2 01:13:18 | 显示全部楼层
不就是杖举单位去干一些别的事嘛...
可以先
loop
exitwhen gCreate==null
set gUnit=fristofgroup(gCreate)
call RemoveUnitFromGroup(gCreate,gUnit)
call XXfunction(gUnit,其它要传递的东东,等等)
endloop

大概是这样...
回复

使用道具 举报

发表于 2008-3-6 12:13:12 | 显示全部楼层
自己弄一个自定义函数就可以了,标准的肯定没有.
回复

使用道具 举报

发表于 2008-3-8 18:38:57 | 显示全部楼层
WAR基本上可以看成单线程的
用一个全局变量传递一般不会出很大问题(当然你不能用暂停触发几秒之类的)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 20:04 , Processed in 0.338377 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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