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

Лучший ответ:
ой сорь, забыл малость, там не событе а функция с похожим названием:
Прикладываю пример, чтобы потом не ныли что не работает...



Просмотров: 203

XGM Bot #1 - 2 месяца назад 0
Похожие вопросы:

» ответ
Москиты - невыделяемы. Невозможно.
» ответ
Москиты не рассматриваются event units in range и GroupEnum###units, москиты можно выбрать только EventUnitsofplayer.
» ответ
В теории, да - будут работать.
На практике - лучше проверь, это вар, тут возможно все.
» ответ
Ааа, ну тогда смотри
не_кликабельность Сларка делается так
а - его морфят в юнит без модельки
б - ему дают москитов и отбирают (что бы на него нельзя было кликнуть, но можно было выделить)
в - все события "атакован" приводятся к действию "стоп", если это Сларк
г - аура регена игнорирует то что Сларка видят
у тебя на пути стоит пункт Б, т.к. что бы умные люди не заменяли себе пустую модельку (пункт А) на нормальную и не могли на неё в итоге тыкать... Так что в итоге - ты можешь её заменить, но тыкнуть всё равно не сможешь... шах и мат
» ответ
найти в разделе действий с юнитами приказ без цели crypt lord - locust swarm

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

наткнулся на xgm.guru/p/100/187308
читайте что вам пишут и включайте мозги
прикреплены файлы
LainMikoroso #6 - 2 месяца назад (отредактировано ) 2
Там ответили после того как я закрыл вопрос, поэтому не заметил
quq_CCCP #7 - 2 месяца назад 1

ой сорь, забыл малость, там не событе а функция с похожим названием:
Прикладываю пример, чтобы потом не ныли что не работает...
прикреплены файлы
JackFastGame #8 - 2 месяца назад 0
У меня все скиллшоты записаны в глобальную перменную с массивом. Циклом пробегаюсь по каждому, и все хорошо.
LainMikoroso #9 - 2 месяца назад 0
ой сорь, забыл малость, там не событе а функция с похожим названием:
Прикладываю пример, чтобы потом не ныли что не работает...
Вечером гляну
Steal nerves #10 - 2 месяца назад (отредактировано ) 2
Можно еще вот это через 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), как там управляют с москитами
прикреплены файлы