23

» WarCraft 3 / Что с Хайвом?

Похожие вопросы:

ответ
Не сов сем по теме, но близко - вот такое можно реализовать на новых функциях 1.31
Увы, полноценного инвентаря на аналогичных функциях пока не выкладывали в общий доступ, каждый пилит себе свою версию.
ответ
При осмотре карты тоже не совсем понял почему игра перестает строительство. Как решение, ты можешь даммику строительства поменять расу на нежить, таким образом уже здание само будет достраиваться.
Поскольку у тебя на карте при беглом осмотре юнитов строителей я не заметил, то выше указанное решение как раз то что нужно тебе.
П.С.
Под какую версию игры рассчитана данная карта?
ответ
Конечно можно! Для этого надо в поле "авторы" ресурса указать автора оригинального материала и поместить ссылку на оригинальный материал в соответствующее поле.
Пример: xgm.guru/p/cp2077/better-minimap
Если вы как-либо модифицировали этот материал, в поле "авторы" можно через | дописать и свой никнейм.
Стоит помнить, если автор обратится к нам с просьбой удалить ресурс - нам придется снять такой ресурс с публикации и убрать видимость. Но это не будет считаться нарушением правил.

Важно: Это касается только открытых материалов. Если вы его купили и/или там есть явный запрет на распространение - не стоит загружать такие материалы к нам на сайт без уточнения у Администрации.
По поводу материалов, используемых внутри модов или карт - нужно завести спец. раздел/квест/титры и перечислить их там в нужных категориях.
ответ
Нашел, называется динамическое индексирование

чет все равно не понимаю, как сделать проверку
юнит получил урон, если юнит = юнит из переменной UnitsBuffed - запустить триггер?
Как вместо индекса указать любой юнит из переменной?

Получилось, вот такая штука нужна была как на втором скрине, все равно оставлю тему, мб кому пригодится еще

23

» WarCraft 3 / Не запускается карта. Jass

Похожие вопросы:

ответ
~8gabriel8:
quq_CCCP, извлёк. Теперь мне засунуть этот код в копию этой карты, которую в редакторе кампаний добавить в кампанию и сохранить? Вроде как получается то же самое, как при сохранении карты в JNGP отдельно, а потом её добавлении в кампанию.
P. S. Цвета персонажей слетели при этом способе, а они очень важны. Хотя так код и правда работает.
P. P. S. Сначала карта запускалась, но цвета юнитов менялись, код срабатывал. Потом решил повторить это(замену файла war3map.j), внеся изменения в простые триггеры, но карта уже не запускалась.
P. P. P. S. Короче, разобрался в причине того, что карта не запускалась, я её с рабочего стола загружал и сохранял. Видимо из-за русских символов в пути не получалось. Если карта лежит в папке maps, то нормально. Но проблема с другими цветами персонажей, а точнее красным цветом, так и осталась. В итоге решил не мучиться, а сделать всё обычными триггерами.
Кстати, из триггера убрали элементы vjass, код стал таким, но всё равно не сохранялся в кампании:
globals
timer alp_t = CreateTimer()
integer alp_m = 0
unit array alp_a
boolean array alp_f
integer array alp_alpha
real array alp_speed
real array alp_time
endglobals
function TimeUnitAlpha takes nothing returns nothing
local integer i = 0
loop
set i = i + 1
exitwhen i>alp_m
if GetWidgetLife(alp_a[i])>0.405 and alp_time[i]>0 then
if alp_f[i] then
set alp_alpha[i] = alp_alpha[i] + R2I(alp_speed[i])
else
set alp_alpha[i] = alp_alpha[i] - R2I(alp_speed[i])
endif
call SetUnitVertexColor(alp_a[i],255,255,255,alp_alpha[i])
set alp_time[i] = alp_time[i] - 0.05
else
if alp_f[i] then
call SetUnitVertexColor(alp_a[i],255,255,255,255)
endif
set alp_a[i] = alp_a[alp_m]
set alp_f[i] = alp_f[alp_m]
set alp_time[i] = alp_time[alp_m]
set alp_alpha[i] = alp_alpha[alp_m]
set alp_speed[i] = alp_speed[alp_m]
set alp_m = alp_m - 1
if alp_m==0 then
call PauseTimer(alp_t)
endif
endif
endloop
endfunction
Принимает : (Юнита, Длительность , начальная прозрачность , макс. прозрачности за время , Появится/Исчезнуть )
call AddUnitAlpha(Caster,3,0,255,true) = Появится за 3 секунды
call AddUnitAlpha(Caster,3,255,255,false) = Исчезнет за 3 секунды
function AddUnitAlpha takes unit A,real TIMES,integer ALPHA,integer MAX_ALPHA,boolean F returns nothing
set alp_m = alp_m + 1
set alp_a[alp_m] = A
set alp_f[alp_m] = F
set alp_time[alp_m] = TIMES+0.10
set alp_alpha[alp_m] = ALPHA
set alp_speed[alp_m] = MAX_ALPHA/TIMES*0.05
if alp_m==1 then
call TimerStart(alp_t,0.05,true,function TimeUnitAlpha)
endif
endfunction
ответ
Так тебе вджасс нужен)


Вджасс это дополнение к обычному джассу, у себя ты можешь видеть строки объявления библиотеки, продвинутые комментарии и статические константные переменные

ответ
В том и дело что ОТВЕТА - НЕТ. Способность я НЕ кастую. Я проверяю - есть ли она у героя, и какого она уровня. Мне нужна ПАССИВНАЯ, способность. В данном случае моя способность блокирует часть урона, в зависимости от уровня, она не является пустышкой. Всё. Теперь я в тригере делаю проверку - что способность у героя есть. И если она есть, то на каждом 20-м ударе по герою, будет добавлятся способность - защита +10, или больше, взависимости от уровня способности, и затем через 30 секунд удалятся.
Я не спрашивал как кастовать скилл, и как с ним работать.
Я спросил другое:

ПОЧЕМУ? Почему способность сама по себе работает(ОНА ПАССИВНАЯ, и она работает), а обращение к ней тригера(ПРОВЕРКА того что, способность у героя есть), даже если сам тригер не активируется(СОБЫТИЕ, ещё ни разу не произошло, или галочка "изначально включен" убрана), ломает игру?

Прочитай внимательно всё что я писал пожалуйста, у меня просто ощущение что ты не всё прочитал, и не всё скрины посмотрел.

В общем и целом. Подвожу итоги:
Проблема оказалась конкретно в способности. Я так посмотрел, она видимо каким-то образом забаговалась.
Она была сделана на основе способности "каменные доспехи", но конкретно у этой способности почему-то изначальная раса была "наги". Т.е. это уже странно, потому что эта способность изначально от "ночных эльфов". Кроме этого, я отличий от стандарта в ней никаких не видел.
Я ее удалил, создал абсолютно такую же способность, и она работает, всё запускается. Скилл(тригерный) я сделал ровно так как и хотел, никакой ошибки в нём нет и не было в помине, о чем я в принципе подозревал с самого начала. Не знаю с чем связать этот баг, поэтому в принципе вопрос закрываю.
Ответ на него я нашёл сам: это баг редактора.
Других вариантов я не вижу.

23

» WarCraft 3 / Скрытые файлы MPQ

Похожие вопросы:

ответ
Diaboliko, у предметов с этим бага
юзай юнитов
с ними намного проще
  1. mpq
ответ
Скачиваешь этот файл: xgm.guru/files/100/179980/comments/336580/War3Patch.txt
Далее открываешь архив War3Patch.mpq в редакторе mpq (например Ladik's MPQ Editor) и используешь файл в качестве listfile.
Модель будет лежать по этому пути: Units\Creeps\HeroTinker\HeroTinker.mdx
ответ
Maolink, тут скорее всего все вшито на уровне движка, Расса выбирается только до игры, в игре уже никак сменить низя.
ответ
Ev3nt:
Андрей17, это файл не является бинарным 0.0. Откройте с помощью, к примеру, NotePad++.
Я и написал что он бинарник не работает и работаю с war3map.j!

Проверил MPQ Master; засунул и высунул в карту war3map.j и полёт нормальный ничего не сломалось!

23

» Администрация XGM / Как удалить аккаунт?

Похожие вопросы:

ответ
Если хочешь, твои проекты и блог мы можем удалить.
ответ
Никак. Это уже много раз обсуждалось. На сайте нет возможности удалить аккаунт. Сайту всегда нужны пользователи! Часть сайта, часть сообщества!
ответ
Без явных доказательств принадлежности этого аккаунта - никак. Есть есть, то просьба обратиться в личку или через форму обратной связи (с указание контактного почтового адреса)
ответ
Сделано, можешь привязывать
ответ
Написать в техподдержку.

23

» WarCraft 3 / Утечка памяти

Похожие вопросы:

ответ
~8gabriel8:
Вот карта, где есть удаление отрядов игроков:

По идее на стороннем ресурсе есть эти темы про удаление утечек:
Но при беглом осмотре не увидел там информации, которую ты здесь спрашиваешь.
ответ
PAMEXI:
makkad:
А может ли быть дело не в триггерах, а к примеру в моделях? Кто нибудь когда нибудь сталкивался с фризами из-за используемых моделей?
Это звучит глупа... Фризы из-за модели...
Тем не менее, попробовал удалить весь импорт из карты (около 6 МБ, 157 файлов mdx). Лаги и фризы прекратились. Сейчас дихотомией пробую найти проблемную модель. Хотя может проблемная модель и не одна, или например может быть накапливаемый эффект, который так не найти.

Сильно уменьшил число лагов, избавившись от двух моделей. Эти модели ещё и сами по себе вели себя странно. В частности, фундамент из модели Домика произвольно прикреплялся к анимациям других моделей. А модель Академии иногда меняла свой видимый масштаб без причины.
Вставил эти модели в пример xgm.guru/files/100/244875/comments/448654/Models.w3m, где видны эти артефакты
Модели скачивал от сюда:
ответ
сорян за некропост, но дам ответ на данный вопрос, т.к. появились нужные знания
эта функция утечна на 1.26, а точнее сам локальный звук, поэтому лучше юзать глобалки заготовленные и ресайкл систему, но там настолько ущербная утечка, что её можно и проигнорить в принципе
ответ
Пока юнит разлагается и ты видишь на земле труп, юнит занимает место в памяти, если же юнит разложился -то его уже нет и память он не занимает.
Разумеется в картах типа товер дефенсов имеет смысл сокращать время сокращения или делать суммонами, чтобы после смерти они исчезали не оставляя трупы - вспомните что происходит с духами волков после их убийства. Но тут палка о двух концах, юниты могут наносить урон и убивать других юнитов - так вот если какой нить самон плюнет во врага и сдохет, а тычка долетит до цели через некоторое время и убьет - убивший юнит будет равен null, в доте есть такой баг, змейки веномансера имеют ядовитую атаку и часто обеспечивают суецид врагам, не давая бабки за фраг их хозяину.
ответ
Ну я сегодня за кэпа, обьясню вкратце:
Утечки - это необнуленные переменные и всякий прочий темпо-мусор, который засоряет собой оперативку игры.
Многие функции ГУИ(триггеров) содержат в себе незначительные утечки - к примеру всякие математические функции, некоторые же содержат значительные утечки - например, функция "двигать в точку" создает целый обьект "локация", который там и остается, а по хорошему должен быть удален.
Обычно, это все не важно, если ты не создаешь сложных триггеров с малым интервалом. Например, у тебя есть способность "блинк", которая триггерно двигает юнита в точку - от такой способности не создастся так много точек, что у тебя начнет тормозить игра, даже за час непрерывного спама.
А вот если у тебя есть способность, которая двигает юнита таким образом каждые 0.01 сек (в течение 1 секунды он плавно летит, к примеру) - то тут лучше бы за собой убирать.
Когда ты поймешь насколько утечные ГУИ функции, ты начнешь постепенно переходить на Джасс, а когда ты поймешь насколько много текста на джассе ты должен напечатать даже для того чтобы просто нанести урон в области и навесить эффект - на этом моменте тебе расхочется делать карты.)

23

» WarCraft 3 / WarDota4

Ваш ресурс не прошёл автомодерацию. Пожалуйста, внесите исправления или ожидайте проверки модератором.
Причина
Должен присутствовать файл одного из типов: exe, bat, msi, apk, cmd, com, csh, ipa, ksh, osx, out, paf, ps1, run, zip, 7z, rar, tar, gz, gzip, jar, lzip, tgz, tbz2, bz2, zipx, zz, dmg, ipg, z, iso
Your resource has not passed automoderation. Please make corrections or wait for the moderator to check.
Reason
There must be a file of one of the following types: exe, bat, msi, apk, cmd, com, csh, ipa, ksh, osx, out, paf, ps1, run, zip, 7z, rar, tar, gz, gzip, jar, lzip, tgz, tbz2, bz2, zipx, zz, dmg, ipg, z, iso
// CID1
23

» WarCraft 3 / Меняется патч карты с 1.26 на 1.31

Похожие вопросы:

ответ
Не сов сем по теме, но близко - вот такое можно реализовать на новых функциях 1.31
Увы, полноценного инвентаря на аналогичных функциях пока не выкладывали в общий доступ, каждый пилит себе свою версию.

23

» WarCraft 3 / Чужие модели

Похожие вопросы:

ответ
при указании ника автора в разделе авторы и нормальном оформлении можно
и естественно при отсутствие претензий со стороны автора
ответ
Бордер, xgm.guru/p/wc3/various_textures
Ищи через гугл "xgm.guru [то, что тебе надо]", это имхо удобнее местного поиска, да
Только имхо это все равно не оч:
  • многовато геморроя
  • способ подразумевает каст дамми абилки, а это опять же срабатывания всяких "юнит кастит абилку" и бла-бла-бла
  • ну и хотя мелочь - баг после сейва, он там описан
проще тупо несколько юнитов с разными текстурами сделать и смириться с кол-вом занимаемого места и/или необходимостью прелоада, зато всё будет шито-крыто
ответ
Linour:
Доставай модели не из депротекченой кампании, а MPQ эдитором. Просто открой в нём кампанию и ищи нужные модели/текстуры
ответ
~8gabriel8:
Теоретически можно было бы прикрепить голову и руки к аттачам head, left_hand, right_hand. Но не знаю, чётко ли у этих моделей двигаются крепления.
ответ
Допустим есть модель, вот она работает в редакторе, а потом просто не работает - и да, именно так все происходит.
Будет работать после первой проверки карты.
Также нужно проверить правильность импорта модели.

23

» WarCraft 3 / Активность?

Похожие вопросы:

ответ
идем читать статьи
ищем фразы - запретить заклинание, спелл бук, триггеры
ответ
Ну вылет у тебя на функции, которая занимается отрисовкой графики. Она универсальная, там и частицы обрабатываются, и поверхности. Так что ошибка явно в модели, а какой и как - хрен его знает
ответ
Дать герою на время способность спел бука в котором будет вампиризм или как-то так.
ответ
Триггерно. Ловишь событие применения предмета, даешь скрытую в спэллбуке способность змеиная ловкость, подрубаешь таймер, по истечению таймера удаляешь способность.

23

» Администрация XGM / Не отображается изображение

Похожие вопросы:

ответ
Исправили
ответ
Это связано с xgm.guru/p/117/Bag-s-prevyu-s98
Поменяй ссылки на существующие файлы
ответ
У меня не вопроизводится. Попробовал по-разному - и с новыми комментами, и с текущими. И в репосте и в оригинале.
Если будет возможность уточнить шаги воспроизведения - переоткрывай.

23

» WarCraft 3 / Чтение памяти игры

Похожие вопросы:

ответ
По мемхаку 127b из всех кого я знаю, может помочь только quq_CCCP, но не уверен что он сможет в поиск оффсетов.
Есть способ попробовать по аналогии с 126 патчем искать оффсеты, и как научитесь то в 127 скорее всего так же будет.
В целом тот мемхак, который работает на 127b я видел только изменение брони и всё.. Я не сильно в этом уверен, но кажется, что ничего не выйдет путнего =(

23

» WarCraft 3 / Патч игры

Похожие вопросы:

ответ
~8gabriel8:
niBeHb, а если в оконном режиме игру запустить, то тоже чёрный экран?
Чтобы запустить в окне, нужно в ярлыке добавить -window.
ответ
Возможно в мемхаке есть такая возможность. А так - только 1.31.
ответ
ThatGuyFromBar, проверь.
После удаления этой кнопки лично у меня вылетов больше не было. Может багованная модель или попкорновский эффект, а может триггер, который на ней висит, хз.
Попробуй выделить весь декор и поднять с помощью CTRL+PageUp, авось с отриательной z работать не хотит.
На кнопке поднятие попробовал, всё равно вылетает

Updt. Снёс всё попкорн эмиттеры с модели кнопки, и переимпортировал в карту. Вроде работает
ответ
Через локальную сеть

23

» WarCraft 3 / HD&SD Reforged

Похожие вопросы:

ответ
Прикрепляю блп. Видимых проблем нет.

Nelloy, создавай через CreateUbersplat(x, 0, 'Adrt', 255, 255, 255, 255, true, true)
ответ
в рефе в менеджере импорта появилась новое поле HD /SD импортируем обе модели, называем одинакого, а в списке переключаем версию графики, всё, этого достаточно.
Если вы каким то чудом не работаете в редакторе то в режиме папки у вас будет _HD.w3mod туда кидаете все HD модели, а sd модели в корень, разумеется имена должны полностью повторяться, если подели лежат в подпапке, то должно быть _HD.w3mod\models\model.mdx для HD версии и в корне игры должно быть так, models\model.mdx для SD модели

23

» WarCraft 3 / Вопрос по моделькам

Похожие вопросы:

ответ
Модель я переименовал в rifleman и засунул в его папку в war3.mpq
Может быть прописать путь текстуры для модели так же как у rifleman?
ответ
Всё. Понял в чём проблема
ответ
  1. Хорошая модель должна иметь минимальное необходимое количество полигонов. Что будет если заспавнить много юнитов можешь проверить и сам.
  1. 8 Мб - лимит для патчей до версии 1.26. В последнем патче карта может весить 100+ Мб. О скорости скачивания ничего не могу сказать.
ответ
Насколько я понял, тебе нужно просто сменить текстуру. Для этого тебе по меньшей мере нужна текстура. Можно взять либо стандартную, либо создать самому (что довольно просто, если знать как).
Чтобы создать текстуру, возьми любое изображение, открой его в ФШ и сохрани как tga 32 бит с размером до 512х512 (вроде бы можно делать любой размер, не превышающий 1024х768, но я советую сохранять пропорции и делать размер не больше 512х512, или кратных половине этого числа (256/128/64/32) , за тем открой в War3 Image Extractor и переведи формат tga в blp. Потом открываешь модельку - редактор текстур и переименовываешь нужную текстуру в ту которая тебе нужна (они должны быть в одной папке) жмешь - Enter - .
ответ
LainMikoroso, Сценарий - > Параметры Карты -> Нестандартное освещение (Ставим галочку) -> Выбираем подходящее
совет: учите инструментарий, без этого никуда

23

» WarCraft 3 / Проверка по баффу

Похожие вопросы:

ответ
Объясню, почему я удалил код: после проведённого за кодом времени, я понял, что сильно погорячился, задав такой глупый вопрос. Стоило отдохнуть, проветрить голову, и решение нашлось. Тем, кто столкнулся с хоть самую малость, но похожей проблемой, дам совет: всегда проверяйте соответствия заклинаний, написанных в коде jass (CTRL + D, если кто не знает, как узнать id заклинания) и ,конечно, сам синтаксис. Также посоветую не утраивать "свалку" в коде, как это сделал я. В общем, если кому интересно, как я решил проблему, пишите - расскажу или даже помогу если у вас она схожая.(Всё дело во внимательности)...
Сброшу код триггера таким, каким я его хотел видеть изначально:
function MU_Check_lvl_four takes nothing returns boolean
    if ( not ( GetUnitAbilityLevelSwapped('A011', udg_Akame_Killer) == 4 ) ) then
        return false
    endif
    return true
endfunction

function MU_Check_lvl_three takes nothing returns boolean
    if ( not ( GetUnitAbilityLevelSwapped('A011', udg_Akame_Killer) == 3 ) ) then
        return false
    endif
    return true
endfunction

function MU_Check_lvl_two takes nothing returns boolean
    if ( not ( GetUnitAbilityLevelSwapped('A011', udg_Akame_Killer) == 2 ) ) then
        return false
    endif
    return true
endfunction

function MU_Check_lvl_one takes nothing returns boolean
    if ( not ( GetUnitAbilityLevelSwapped('A011', udg_Akame_Killer) == 1 ) ) then
        return false
    endif
    return true
endfunction

function MU_Second_Conditions takes nothing returns boolean
    if ( not ( UnitHasBuffBJ(GetEventDamageSource(), 'B008') == true ) ) then
        return false
    endif
    if ( not ( GetEventDamageSource() == udg_Akame_Killer ) ) then
        return false
    endif
    return true
endfunction

function MU_Start_Conditions takes nothing returns boolean
    if ( not ( UnitHasBuffBJ(GetAttacker(), 'B008') == true ) ) then
        return false
    endif
    if ( not ( GetAttacker() == udg_Akame_Killer ) ) then
        return false
    endif
    return true
endfunction

function Trig_MU_Conditions takes nothing returns boolean
    if ( not MU_Start_Conditions() ) then
        return false
    endif
    return true
endfunction

function MU_Venum_Check takes nothing returns boolean
    if ( not ( udg_MU_Venum_counter == 2 ) ) then
        return false
    endif
    return true
endfunction

function MU_del takes nothing returns nothing 
    if ( MU_Check_lvl_one() ) then
        call SetPlayerAbilityAvailableBJ( true, 'A00X', GetOwningPlayer(GetEventDamageSource()) )
        call UnitRemoveAbilityBJ( 'A00X', GetEventDamageSource() )
    else
        if ( MU_Check_lvl_two() ) then
            call SetPlayerAbilityAvailableBJ( true, 'A00U', GetOwningPlayer(GetEventDamageSource()) )
            call UnitRemoveAbilityBJ( 'A00U', GetEventDamageSource() )
        else
            if ( MU_Check_lvl_three() ) then
                call SetPlayerAbilityAvailableBJ( true, 'A00Y', GetOwningPlayer(GetEventDamageSource()) )
                call UnitRemoveAbilityBJ( 'A00Y', GetEventDamageSource() )
            else
                if ( MU_Check_lvl_four() ) then
                    call SetPlayerAbilityAvailableBJ( true, 'A013', GetOwningPlayer(GetEventDamageSource()) )
                    call UnitRemoveAbilityBJ( 'A013', GetEventDamageSource() )
                else
                    call DoNothing(  )
                endif
            endif
        endif
    endif
endfunction


function Trig_MU_Actions takes nothing returns nothing
    call DestroyTrigger(udg_MU_trig)
    set udg_MU_Venum_counter = GetRandomInt(1, 5)
    set udg_MU_TG = GetAttackedUnitBJ()
    if ( MU_Venum_Check() ) then
        if ( MU_Check_lvl_one() ) then
        call UnitAddAbilityBJ( 'A00X', udg_Akame_Killer )
        call SetPlayerAbilityAvailableBJ( false, 'A00X', GetOwningPlayer(udg_Akame_Killer) )
    else
        if ( MU_Check_lvl_two() ) then
            call UnitAddAbilityBJ( 'A00U', udg_Akame_Killer )
            call SetPlayerAbilityAvailableBJ( false, 'A00U', GetOwningPlayer(udg_Akame_Killer) )
        else
            if ( MU_Check_lvl_three() ) then
                call UnitAddAbilityBJ( 'A00Y', udg_Akame_Killer )
                call SetPlayerAbilityAvailableBJ( false, 'A00Y', GetOwningPlayer(udg_Akame_Killer) )
            else
                if ( MU_Check_lvl_four() ) then
                    call UnitAddAbilityBJ( 'A013', udg_Akame_Killer )
                    call SetPlayerAbilityAvailableBJ( false, 'A013', GetOwningPlayer(udg_Akame_Killer) )
                else
                    call DoNothing(  )
                endif
            endif
        endif
    endif
    set udg_MU_trig = CreateTrigger()
    call TriggerRegisterUnitEvent( udg_MU_trig, udg_MU_TG, EVENT_UNIT_DAMAGED )
    call TriggerAddCondition( udg_MU_trig, Condition( function MU_Second_Conditions ) )
    call TriggerAddAction( udg_MU_trig, function MU_del )
    else
        call DoNothing(  )
    endif
endfunction

//===========================================================================
function InitTrig_MU takes nothing returns nothing
    set gg_trg_MU = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_MU, EVENT_PLAYER_UNIT_ATTACKED )
    call TriggerAddCondition( gg_trg_MU, Condition( function Trig_MU_Conditions ) )
    call TriggerAddAction( gg_trg_MU, function Trig_MU_Actions )
endfunction
Суть триггера:
Имеется способность с четырьмя уровнями. На каждом уровне урон способности разный, а шанс срабатывания всегда 25%. При атаке герой, имеющий такую способность имеет шанс (25%) на отравление противника.
Переменная udg_Akame_killer равносильна GetEventDamageSource()
P.S. Возможно кому-то даже пригодится этот код... Сделан полнейшим неумехой в плане jass, так что не судите строго!
ответ
XGM Bot:
Похожие вопросы:

ответ
Farrien, summoned unit.
Хоть жезл, хоть абилка блейдмастера.