Добавлен
Возвращаемся к предыдущему вопросу, TriggerRegisterUnitInRange() не отлавливает москитов, хотя говорили что отловит, поэтому спрашиваю еще раз, как можно отлавливать встречу двух враждующих дамми?

ой сорь, забыл малость, там не событе а функция с похожим названием:
Прикладываю пример, чтобы потом не ныли что не работает...
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
14
Что будет если этим дамми дать москитов и триггерно их забрать?Их можно будет выделить?
20
бот тебе нашел, 4 пункт, если лень нажать на ссылку не стоит вообще заходить в qa
14
бот тебе нашел, 4 пункт, если лень нажать на ссылку не стоит вообще заходить в qa
Там только на второй вопрос ответ.
20
LainMikoroso:
и правда, прошу прощения
немного покопался, и понял, что юнита с москитами функция не видит, был ли он добавлен на карту изначально или создан в процессе игры, и даже если был создан без москитов и потом они были добавлены - все равно не видит
Если герой подберет предмет с москитами - он также будет невидим для этой функции, но связанные с ним действия все также работают в моей миникарте, а также действия с юнитом, которого я просто записал в переменную
Это значит, что тебе нужна небольшая бд юнитов-даммиков, и нужно просто сверять их координаты
ну и само собой, это подойдет для триггерных спеллов, управлять оригинальными москитами не в пример сложнее и легче сделать кастомный аналог

наткнулся на xgm.guru/p/100/187308
читайте что вам пишут и включайте мозги
Загруженные файлы
14
Там ответили после того как я закрыл вопрос, поэтому не заметил
32
ой сорь, забыл малость, там не событе а функция с похожим названием:
Прикладываю пример, чтобы потом не ныли что не работает...
Загруженные файлы
Принятый ответ
15
У меня все скиллшоты записаны в глобальную перменную с массивом. Циклом пробегаюсь по каждому, и все хорошо.
14
ой сорь, забыл малость, там не событе а функция с похожим названием:
Прикладываю пример, чтобы потом не ныли что не работает...
Вечером гляну
27
Можно еще вот это через Pick of Units (в предыдущей теме скидывал). Мб это уже было, но пригодится новичкам
код
globals
unit UNITHERO
integer CountUn = 0
endglobals

function Trig_g_Conditions takes nothing returns boolean
    return( GetSpellAbilityId() == 'A000' )
endfunction

function Trig_X takes nothing returns nothing

if UNITHERO != GetEnumUnit() then
    set CountUn = CountUn + 1
endif
endfunction

function F_D takes nothing returns boolean
local real x1 = GetUnitX(UNITHERO)
local real y1 = GetUnitY(UNITHERO)
local real x2 = GetUnitX(GetFilterUnit())
local real y2 = GetUnitY(GetFilterUnit())

local real dx = x2 - x1
local real dy = y2 - y1

local real r = 400. //здесь указываем радиус (сами укажите) !!!

return (dx*dx + dy*dx < r*r)
endfunction

function Trig_g_Actions takes nothing returns nothing
local group g = CreateGroup()
local real x = GetUnitX(GetTriggerUnit())
local real y = GetUnitY(GetTriggerUnit())
local location loc = Location(x,y)
local boolexpr f = null 
local boolexpr f1 = Condition(function F_D)
set UNITHERO = GetTriggerUnit()
set CountUn = 0
//call GroupEnumUnitsInRange(g, x, y, 400., f) //ловит всех юнитов, находящихся в радиусе от точке, но москитов не ловит
//call GroupEnumUnitsInRangeCounted(g, x, y, 400., f, 4) //аналогична GroupEnumUnitsInRange, но берет определенное кол-во юнитов. Москитов не ловит
//call GroupEnumUnitsInRangeOfLoc(g, loc,400., f) //аналогична GroupEnumUnitsInRange. Москитов не ловит.
//call GroupEnumUnitsInRangeOfLocCounted(g, loc,400., f, 4) //аналогична GroupEnumUnitsInRangeCounted. Москитов не ловит.
//call GroupEnumUnitsInRect(g,bj_mapInitialPlayableArea ,f1) //ловит всех юнитов в области. Москитов не ловит.
//call GroupEnumUnitsInRectCounted(g,bj_mapInitialPlayableArea ,f1, 4) //ловит определенное кол-во юнитов в области. Москитов не ловит. 
//call GroupEnumUnitsSelected(g,GetTriggerPlayer(),f) //ловит юнитов. выделенным игроком. Москитов. очевидно. не ловит.
call GroupEnumUnitsOfPlayer(g,GetTriggerPlayer(),f1) //ловит всех-всех юнитов игрока на карте. Москитов ловит нормально.
//call GroupEnumUnitsOfType(g,"Peasant", f) //ловит всех-всех юнитов с этим именем. Нужно писать английский аналог название (например работник = Peasant). Ловит москитов.
//call GroupEnumUnitsOfTypeCounted(g,"Peasant", f, 4) //ловит опреденное кол-во юнитов группу. Ловит Москитов.


call ForGroup(g, function Trig_X)
call BJDebugMsg("Кол-во юнитов: " + I2S(CountUn))
call RemoveLocation(loc)
call DestroyGroup(g)
call DestroyBoolExpr(f)
call DestroyBoolExpr(f1)
set g = null
set f = null
set f1 = null
set loc = null
endfunction

//===========================================================================
function InitTrig_g takes nothing returns nothing
    set gg_trg_g = CreateTrigger(  )
    call TriggerRegisterPlayerUnitEventSimple( gg_trg_g, Player(0), EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_g, Condition( function Trig_g_Conditions ) )
    call TriggerAddAction( gg_trg_g, function Trig_g_Actions )
endfunction
еще советую посмотреть наработки с отрядами (формациями как в total war), как там управляют с москитами
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.