找回密码
 点一下
查看: 1757|回复: 3

怎么随机选取附近一个敌人单位啊

[复制链接]
发表于 2010-4-13 15:18:21 | 显示全部楼层 |阅读模式
这样的函数怎么写啊?我呢之前别人给我一个函数用来选取附近全部敌人单位的
[jass]
local group g = CreateGroup()
call GroupEnumUnitsInRange(g,GetUnitX(hero),GetUnitY(hero),300,null)
loop
set u = FirstOfGroup(g)
exitwhen u==null
call GroupRemoveUnit(g,u)
if ( (IsUnitAliveBJ(u) == true) and (IsUnitEnemy(u, GetOwningPlayer(hero)) == true ) ) then
call UnitDamageTarget(hero, u,75*I2R(GetUnitAbilityLevel(hero,'A06B')), true, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL, WEAPON_TYPE_WHOKNOWS )
endif
endloop
call DestroyGroup( g )
[/jass]
但是现在我只想选取其中的一个,但是这个函数我根本不知道怎么修改,对于单位组了解的很少,所以请问怎么随机选取附近的一个敌人单位啊
发表于 2010-4-14 01:11:29 | 显示全部楼层
[jass]
if ( (IsUnitAliveBJ(u) == true) and (IsUnitEnemy(u, GetOwningPlayer(hero)) == true ) ) then

call UnitDamageTarget(hero, u,75*I2R(GetUnitAbilityLevel(hero,'A06B')), true, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL, WEAPON_TYPE_WHOKNOWS )

exitwhen true

endif
[/jass]
回复

使用道具 举报

发表于 2010-5-18 22:10:08 | 显示全部楼层
正好我也要做这个,给LZ一个思路吧
做好了把代码发上来

楼上的那个不是随机,选的是组内第一个可以被伤害的单位

用GroupEnumUnitsInRange选取一个范围内的所有单位,ForGroup循环,循环内为每一个单位生成一个随机数,并且记下最大的那个,然后选取那个最大的单位(或者最小的,看LZ心情了)

另外,这个不算是挖坟吧 - -
回复

使用道具 举报

发表于 2010-5-19 16:39:43 | 显示全部楼层
[jass]
    set x = -1.0
    loop
        set u = FirstOfGroup(g)
        exitwhen u == null
        set y =  GetRandomReal(0.0, 10000.0)
        if y > x then
            set uchosen = u
            set x = y
        endif
        call GroupRemoveUnit(g, u)
    endloop
[/jass]
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-12 05:14 , Processed in 0.060502 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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