помогите с алгоритмом jass гроуп с условиями, не могу разобраться.

Принятый ответ

вот как пример
local group g = CreateGroup()
local unit f
call GroupEnumUnitsInRange(g,x,y,400.,null)
loop
   set f = FirstOfGroup(g)
   exitwhen f == null
if IsUnitEnemy(f,GetOwningPlayer(u)) and GetWidgetLife(f)>0 and IsUnitType(f, UNIT_TYPE_STRUCTURE) == false and  IsUnitType(f , UNIT_TYPE_MAGIC_IMMUNE) == false   then
    call UnitDamageTarget(u,f,dmg,true,false,ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL,null)
    call DestroyEffect(AddSpecialEffectTarget("Objects\\Spawnmodels\\Human\\HumanBlood\\HumanBloodFootman.mdl", f, "chest"))
    call DestroyEffect(AddSpecialEffect("Chain Impale.mdx",GetUnitX(f),GetUnitY(f)))
    endif
    call GroupRemoveUnit(g,f)
endloop
    call DestroyGroup(g)
set g =null
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
32
5 лет назад
Отредактирован Raised
0
В чем именно?
0
4
5 лет назад
0
quq_CCCP:
а всем именно?
В определенном диапозоне выбора при этом имея условие кем находится юнит и имея какой-нибудь бафф.
0
32
5 лет назад
0
Ну в фильтре и описывайте кого вам нужно в группе, живые, враги там с таким то баффом.
0
21
5 лет назад
0
Опиши проблему детальней.
3
12
5 лет назад
Отредактирован Raised
3
вот как пример
local group g = CreateGroup()
local unit f
call GroupEnumUnitsInRange(g,x,y,400.,null)
loop
   set f = FirstOfGroup(g)
   exitwhen f == null
if IsUnitEnemy(f,GetOwningPlayer(u)) and GetWidgetLife(f)>0 and IsUnitType(f, UNIT_TYPE_STRUCTURE) == false and  IsUnitType(f , UNIT_TYPE_MAGIC_IMMUNE) == false   then
    call UnitDamageTarget(u,f,dmg,true,false,ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL,null)
    call DestroyEffect(AddSpecialEffectTarget("Objects\\Spawnmodels\\Human\\HumanBlood\\HumanBloodFootman.mdl", f, "chest"))
    call DestroyEffect(AddSpecialEffect("Chain Impale.mdx",GetUnitX(f),GetUnitY(f)))
    endif
    call GroupRemoveUnit(g,f)
endloop
    call DestroyGroup(g)
set g =null
Принятый ответ
0
21
5 лет назад
0
Опиши проблему детальней != скинь свой код.
2
32
5 лет назад
2
Daro, дурные советы, по рукам бы дал за такой кодинг.
  1. Для проверок есть болекспры
  2. ненужно писать == false или == false, функция уже сама по себе true или false.
0
8
5 лет назад
0
quq_CCCP, прав, но болэкспры имеют слишком малый лимит, из-за чего могут возникнуть баги. По крайней мере я ловил такие, так что использование условий IF в действии вполне оправдано
0
28
5 лет назад
Отредактирован PT153
0
Atesla, какой такой лимит? Использую только фильтры, никаких проблем не было.
В любой случае проверки в фильтре не могут превзойти лимит "потока".
0
8
5 лет назад
Отредактирован Atesla
0
PT153, возможно, во всем виноваты мои кривые руки, конечно...
Но использовал я не только в качестве фильтров. Скорее всего, дело было в этом
0
32
5 лет назад
0
Atesla, лимит такой же у болекспров для групп, для кондижешена триггера чуть чуть поменьше чем для акшина триггера, но вы этот лимит не достигните если ниче кроме проверок в болекспрах делать не будите (переборы в цикле еще быстрее к обрыву приведут).
0
28
5 лет назад
0
Но использовал я не только в качестве фильтров. Скорее всего, дело было в этом
Я тоже все действия делаю в фильтрах, но лимит потока не ловил.
0
4
5 лет назад
0
Daro:
вот как пример
local group g = CreateGroup()
local unit f
call GroupEnumUnitsInRange(g,x,y,400.,null)
loop
   set f = FirstOfGroup(g)
   exitwhen f == null
if IsUnitEnemy(f,GetOwningPlayer(u)) and GetWidgetLife(f)>0 and IsUnitType(f, UNIT_TYPE_STRUCTURE) == false and  IsUnitType(f , UNIT_TYPE_MAGIC_IMMUNE) == false   then
    call UnitDamageTarget(u,f,dmg,true,false,ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL,null)
    call DestroyEffect(AddSpecialEffectTarget("Objects\\Spawnmodels\\Human\\HumanBlood\\HumanBloodFootman.mdl", f, "chest"))
    call DestroyEffect(AddSpecialEffect("Chain Impale.mdx",GetUnitX(f),GetUnitY(f)))
    endif
    call GroupRemoveUnit(g,f)
endloop
    call DestroyGroup(g)
set g =null
Спасибо вам всем, долго не мог с этим разобраться, всё что тут было обговорено между вами я принял на заметку.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.