Статья
Раздел:
Триггеры и объекты

Вступление

К сожалению все чаще вижу что наши картастоители знают о предметах очень мало и все еще допускают ошибки 10 летней давности.

Усиливающие предметы или Руны

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

Баги усиливающих предметов

  1. Модели усиливающих предметов не удаляются после их использования, этот баг довольно часто встречается в Hero Defence - картах, где прокачка персонажа производится рунами, от руны после применения остается розовый кубик едва заметный на земле ( зависит от модели руны ) что является утечкой, а так же 100500 таких вот ошметков рун начинает вызывать жуткие просадки фпс когда игрок смотрит на землю забитую такими ошметками.
Этот баг связан с моделями усиливающих предметов и имеет 2 пути решения:
A) Удаление предмета сразу после получения его юнитом.
Пример на jass
function Trig_Rune_Remover_Conditions takes nothing returns boolean
    return GetItemType(GetManipulatedItem()) == ITEM_TYPE_POWERUP 
endfunction

function Trig_Rune_Remover_Actions takes nothing returns nothing
    call RemoveItem( GetManipulatedItem() )
endfunction

//===========================================================================
function InitTrig_Rune_Remover takes nothing returns nothing
    set gg_trg_Rune_Remover = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Rune_Remover, EVENT_PLAYER_UNIT_PICKUP_ITEM )
    call TriggerAddCondition( gg_trg_Rune_Remover, Condition( function Trig_Rune_Remover_Conditions ) )
    call TriggerAddAction( gg_trg_Rune_Remover, function Trig_Rune_Remover_Actions )
endfunction
Ну а так же...
Пример на GUI:
Б) Замена моделей усиливающих предметов на импортные, не содержащие изъяна ( таким методом воспользовался небезызвестный IceFrog )
Примерчик
Вот ссылочка на модель руны из доты xgm.guru/files/100/173200/RuneWithoutDeath.mdx
  1. Усиливающие предметы не могут поднять юниты, находящихся под эффектами некоторых способностей или триггерных действий:
A) Пауза
	native PauseUnit takes unit whichUnit, boolean flag returns nothing
на GUI :
Юниты подвергшиеся паузе, не могут подбирать усиливающие предметы, предмет останется лежать на земле возле героя (юнита)
Увы этот баг печально известен в Dota Allstars как баг Scorpion King, Obsidian Destroyer, Faire Dragon и Linken Spehre на что можно посмотреть ниже:
Видосик
Лечится проверкой:
native IsUnitPaused takes unit whichHero returns boolean
На GUI:
Ну и снятием паузы если вам приспичило вручить юниту предмет прямо сейчас, либо подождать пока пауза не покинет юнита.
Б) Отключить прочие способности (ANcl - channel )
При чем же здесь канал, способность пустышка - которая является основной для домодельных триггерных заклинаний?
А вот при чем, у этой способности есть одно поле-настройки:
Эффект точно такой же как и от паузы, юнит не сможет подобрать предмет.
Как не удивительно в общеизвестной Dota Allstars есть проявление этого бага, у героя Pudge и именуется баг Bottle и Pudge, если интересно то поищите видео на YouTube самостоятельно.
В) Блокировка инвентаря: Что что, инвентарь героя не блокируется! - скажут большинство картаделов новичков, но это не так:
Заблокировать инвентарь можно способностью на основе 'ANdo' (doom) RUS Печать Преисподней - эта способностью обладает эффектом, напоминающий обычное Безмолвие ( ANsi ) silence RUS Безмолвие - способности темной охотницы что блокирует активные способности юнитов, находящихся под эффектом этой способности но куда сильнее, эффект Печати Преисподней распространяется даже на пассивные способности, инвентарь и предметы.
Лекарство только одно - проверка баффа этой способности:
GetUnitAbilityLevel( GetTriggerUnit( ), 'BNdo' ) > 0
На GUI:
Имейте ввиду, что баф способности на основе 'ANdo' (doom) RUS Печать Преисподней нельзя рассеять обычными диспелами или иммунитетом к магии, поможет только триггерное удаление баффа способности:
call UnitRemoveAbility( GetTriggerUnit( ) , 'BNdo' )
На GUI:
Баг 'Amlf' ( manaflare ) RUS Заклинание Крови - эта способность лесных дракончиков которая тоже блокирует инвентарь пока она активна, учтите что 'Amlf' ( manaflare ) RUS Заклинание Крови можно рассеять только если это разрешено в игровых константах, метод проверки тот же- проверка баффа этой способности не будем повторятся.
Маленькая хитрость
Способность Предметы (герой) может быть заблокирована любым безмолвием если в её настройках указать 2 и более уровней, может быть полезно для замены 'ANdo' (doom) RUS Печать Преисподней которая отключает почти все способности.
Не забываем что с заблокированным инвентарем нам не получится подбирать руны!

Фитчи усиливающих предметов

Казалось бы какие еще могут быть фитчи у усиливающих предметов, только баги с утечками - вероятно так думает большинство картаделов, по этому использует руны по самому примитивному способу - одноразовый бонус.
Немного теории - усиливающие предметы, это предметы которые активируются при получению юнитом с активным инвентарем, руны активируют записанные в них способности по 4 сценариям:
  1. В качестве цели способность указанная в настройках руны требует конкретный объект, тогда каст этой способности будет произведет во того юнита, который её подобрал - при этом учитываются цели в настройках заклинания и так называемые Хардкодные цели
  2. В качестве цели способность указанная в настройках руны требует точку, тогда каст этой способности произойдет по координатам руны, которая лежит на земле - при этом все параметры каста будут в порядке, источником урона ( если способность наносит урон. ) будет юнит который подобрал руну.
  3. В качестве цели способность указанная в настройках руны не требует цели но должна быть активирована, тогда каст произойдет по координатам юнита, как будто юнит сам кастанул эту способность.
  4. В качестве цели способность указанная в настройках руны не требует цели, но и не должны активироваться ( Пассивные способности )
Внезапно руны могут кастануть даже пассивную способность, но увы конечно же не любую, удивительно но если в настройках способности указать 'AOen' (endurance aura) RUS Аура выносливости - то юнит подобравший руну получит бафф ауры на несколько секунд, увы только на самого себя, окружающим бафф не достанется.
Способности активируемые рунами - называются Пассивным кастом, его нельзя отследить ни одним из следующих событий:
constant unitevent EVENT_UNIT_SPELL_CAST=ConvertUnitEvent(290)
constant unitevent EVENT_UNIT_SPELL_CHANNEL=ConvertUnitEvent(289)
constant unitevent EVENT_UNIT_SPELL_EFFECT=ConvertUnitEvent(291)
constant unitevent EVENT_UNIT_USE_ITEM=ConvertUnitEvent(87)
На GUI:
Так же руны игнорируют такие состояния юнитов как оглушение, сокрытие,безмолвие, морфы и прочее.
Не все активные способности могут корректно работать в рунах, яркий пример 'AOsf' (summonwolf) RUS Дух волка и 'AOmi' (mirrorimage) RUS иллюзия - юниты вызванные этими способностями через руну погибнут, сразу же после появления - поэтому используйте аналоги, вроде 'ANsq' (summonquilbest) - RUS дух кабана или 'Aill' - посох иллюзий (у последнего нету строчного ид приказа, довольствуемся цифирным 852274 - wand of illusion ) .
Руны, впрочем как и другие предметы могут одновременно активировать не 1 а 4 способности, причем даже разные, руны не проверяют ID приказа и кулдауны способностей, как остальные предметы.

Нестандартное использование усиливающих предметов

Полезные функции

function UnitAddPowerUpItem takes unit u, integer id returns boolean // автор DracoL1ch, помогает безопасно вручать руны даже не героям.
    local item it
    local boolean invAdded = false
    local boolean added = true
    
    set it = CreateItem( id, GetUnitX( u ), GetUnitY( u ) )
    if GetUnitAbilityLevel(u, 'AInv') == 0 then     //AInv -> Inventory
        set invAdded = true
        call UnitAddAbility(u, 'AInv')              //AInv -> Inventory
    endif
    
    if UnitAddItem(u, it) == false then
        set added = false
    elseif GetWidgetLife(it) > 0.00 then
        set added = false
    endif
    
    call RemoveItem(it)
    
    if invAdded then
        call UnitRemoveAbility(u, 'AInv')           //AInv -> Inventory
    endif

    set it = null
    return added
endfunction

function IsUnitDead takes unit u returns boolean 
    return IsUnitType( u, UNIT_TYPE_DEAD ) or GetUnitTypeId( u ) < 1
endfunction

Проходимец, или сделаем аналог Phase Bots из Dota:

Пример #1 сделаем фейс бутс из доты
Думаю многие знакомы с такой шмоткой в карте IceFrog'а где есть предмет при активации которого можно проходить сквозь юнитов, причем пройти в непроходимое место или сквозь здание не получится.
Основано сие чудо на способности 'AOwk' (windwalk) RUS Стремительность - настраиваем способность для предмета как на скриншоте:
Скорость, иконку, бафф и кулдаун настраиваем по вкусу, Урон от подлого удара - обязательно убираем, как и разрешенные цели иначе у нас не будут работать орб эффекты и пассивные способности при активной Стремительности.
Время перемещения в невидимость - еще 1 важный параметр, вводим -1 чтобы юнит никогда не стал невидимым.
Не влияет на результат но тем не менее важно:
Удаляйте как можно больше описаний, эффектов, иконок у дамми способностей, все это дело загружается в память но не дает никакого эффекта, посему удаляйте все не используемые иконки и описания у дамми способностей.
Можно добавить эту способность предмету и радоваться, но многие заметят что стоит герою произнести любое заклиненные как эффект способности пропадет.
Но тут нам помогут наши волшебные руны:
  1. Делаем руну как на скриншоте:
Модель руны обязательно меняем, на пустую или dummy.mdx - чтобы не оставлять спецэффектов смерти руны когда юнит будет её подбирать, это спасет от еще 1 бага -
если игрок не видит сметь руны из за тумана войны, этот спецэффект будет ждать своего часа, пока игрок не увидит это место и не получит просадку фпс если там было много рун и увидит эффект их смерти.
После вручаем руну вот таким кодом:
 	local unit u = GetTriggerUnit( )
    set bj_lastCreatedItem = CreateItem( id нашей руны, GetUnitX( u ), GetUnitY( u ) )
    call UnitAddItem( u, bj_lastCreatedItem )
    call RemoveItem( bj_lastCreatedItem )
    set u = null
на GUI:
И вуаля у нас постоянный эффект проходимости сквозь юнитов, который не сбивается кастом способностей героя (юнита), мы же можем суть руну сразу после каста способности.
вот финальный код:
// Требуются 2 функции из кастом кода карты
// 'A001' - способность активатор
// 'INWW' - руна со стремительностью
// 'BNwk' - бафф стремительности от руны
// udg_DATA - хештаблица.
function Trig_Phase_Boots_Conditions takes nothing returns boolean
    return GetSpellAbilityId( ) == 'A001' // ро код вашей способности, не забывайте менять!
endfunction

function Timer_Phase_Boots_Expires takes nothing returns nothing
    local timer t = GetExpiredTimer( )
    local integer id = GetHandleId( t )
    local unit WindWalker = LoadUnitHandle( udg_DATA, id, 0 )
    local integer time = LoadInteger( udg_DATA, id, 1 )
    local boolean IsDead = IsUnitDead( WindWalker )
    
    call SaveInteger( udg_DATA, id, 1, time + 1 )
    
    if IsDead or time > 25 then // обязательно проверяйте жив ли юнит, мертвые не могут подбирать руны.
    
        if not IsDead then      // проверка на то что юнит жив, мертвых лучше не трогать.
            if GetUnitAbilityLevel( WindWalker, 'BNwk' ) > 0 then
                call UnitRemoveAbility( WindWalker, 'BNwk' ) // удаляем бафф если время истекло.
            endif
        endif
    
        call PauseTimer( t )
        call DestroyTimer( t )
        call FlushChildHashtable( udg_DATA, id )
        
    elseif GetUnitAbilityLevel( WindWalker, 'BNwk' ) < 1 then // проверяем нет ли у юнита баффа.
        if not UnitAddPowerUpItem( WindWalker, 'INWW' ) then // вручаем руну стремительности
            call BJDebugMsg( "Ошибка - юнит не может поднять предмет!" )
        endif
    endif
    
    set t = null
endfunction

function Trig_Phase_Boots_Actions takes nothing returns nothing
    local unit WindWalker = GetSpellAbilityUnit( )
    local timer t = CreateTimer( )
    local integer id = GetHandleId( t )
    
    set bj_lastCreatedItem = CreateItem( 'INWW', GetUnitX( WindWalker ), GetUnitY( WindWalker ) )
    
    if UnitAddItem( WindWalker, bj_lastCreatedItem ) then
        call SaveUnitHandle( udg_DATA, id, 0, WindWalker )
        call SaveInteger( udg_DATA, id, 1, 0 )
        call TimerStart( t, 0.20, true, function Timer_Phase_Boots_Expires )
    else
        call BJDebugMsg( "Ошибка - юнит не может поднять предмет!" )
        call DestroyTimer( t )
        call FlushChildHashtable( udg_DATA, id )
    endif
    
    call RemoveItem( bj_lastCreatedItem )
    
    set WindWalker = null
endfunction

//===========================================================================
function InitTrig_Phase_Boots takes nothing returns nothing
    set gg_trg_Phase_Boots = CreateTrigger( )
    // Под себя добавляем события какие нам вздумаются, в тест карте только 1 игрок.
    call TriggerRegisterPlayerUnitEventSimple( gg_trg_Phase_Boots, Player( 0 ), EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Phase_Boots, Condition( function Trig_Phase_Boots_Conditions ) )
    call TriggerAddAction( gg_trg_Phase_Boots, function Trig_Phase_Boots_Actions )
endfunction

Паленая кошка, или руны могут применять огненный дождь?

Руны могут применять даже Прерываемые (channeling) способности, не требуя от применившего стоять неподвижно. При этом сам каст происходит не по координатам поднявшего предмет героя (юнита) а по координатам этого самого предмета, лежащего на земле.
Казалось бы что в этом хорошего, огненный дождь рядом с тем кто подобрал руну, герой же подбирает руны подходя к ним почти в плотную?
Но тут есть маленькая хитрость:
native UnitAddItem takes unit whichUnit, item whichItem returns boolean
На GUI:
Эта функция вручит юнит предмету, лежащий в любом месте на карте, не перемещая сам предмет к юниту, что нам и полезно - создадим руну огненного дождя над нейтральными крипами и вручим её триггерным действием UnitAddItem нашему герою, и огненный дождь идет над этими нейтральными монстрами, которые кстати побегут бить нашего героя ибо урон будет наносится от его лица.

Все нелюди должны быть уничтожены! Или Дуэль по мотивам Dota 2

У усиливающих предметов есть еще интересные свойства, одно из них оставить эффект способности навсегда у юнита который подобрал способность, одна из группы этих способностей Морфы (ну или метаморфозы), а эффект которые они оставляют на юните это флаг - Непрерываемый
Немного теории об этом
Морфы по своей сути способности выключатели, они как и "Жар преисподней" или "щит пехотинца" могут быть включены и выключены, но только вот что если юнит будет оглушён или вовсе мертв?
А для того и существует флаг Непрерываемый, он гарантирует что юнит выполнит приказ "во что-бы то не стало", даже если он умрет. Морфы славились этими багами еще во времена царя гороха, и близзарды их переделывали, но не все поправили и теперь метаморфоза + руна = Непрерывемый на всегда!
Руна удаляет способность сразу после выполнения, не давая метаморфозе выполнится еще раз чтобы завершить перевоплощение и снять флаг Неприрываемый
Так как сам морф то не произошел, юнит не изменяется а остается каким был, но уже с бонусом в виде неспособности изменить первый отданный приказ.
Что нам нужно:
  • Способность на основе 'AEme' (metamorphosis) RUS Перевоплощение 1 штука.
  • Дамми руна (рецепт приготовления описан выше ) 1 штука.
  • Немного смекалки и терпения.
Настраиваем саму метаморфозу:
Скрин
- Все параметры в 0
- Удаляем все лишние описания.
- Флаг "Непрерываемый" - оставляем как есть, остальные не ставим.
- Альтернативная форма боевой единицы - дамми герой (какой неважно, лиж бы он был летающим) иначе ничего не выйдет.
- Нормальная форма боевой единицы - не имеет значения, оставляем как есть.

Помещаем все это дело в нашу дамми руну и вручаем герою, приказываем ему атаковать и вуаля! Он атакует и плевать хотел на ваши приказы, как будто он оглушен - ни 1 кнопка не кликается, как и предметы в инвентаре, панель приказов при этом полностью активна а не затемнена как от "Безмолвия" или ""Печати преисподней".
На юнита перестанут действовать дизейблы основанные на приказах, включая паузу юнита
Исключения которые плевать хотели на флаг - Непрерываемый:
  1. 'AUsl' - (sleep) RUS Сон - война войной а сон по расписанию! (c) DracoL1ch
  2. 'Apos' - (possesion) RUS одержимость - тоже чхать хотела что там на уме у юнита.
  3. 'Afrz' - (freezingbreath) RUS Ледяное дыхание - способность ледяных змеев нежити, тоже остановит юнита несмотря ни на что, но учтите её бафф не удалить триггерно у юнита.
Но как же вернуть все на место? Юнит же останется таким даже после смерти!
А очень просто, все что нужно это выполнить любой морф до конца, как следует. Для этого достаточно сделать цель юнита недостижимой и вручить ему морф и приказать использовать.
К примеру у нас дуэль и два героя лупят друг друга, делаем их неуязвимыми - результат они не могут бить друг друга, очередь приказов свободна, ну и вручаем им морф в другого юнита, который тут же завершится после применения (длительность 0.01 сек) и ура, юнит вернулся в прежнее состояние, можно радоваться!
Будет несомненно полезно:
Способность 'Aave' (avengerform) RUS Превратится в сфинкса тоже морф, который в отличии от прочих морфов не сбивает текущий приказ и не блокируется безмолвием!

Я ужас летящий на крыльях ночи, или как превратится в ворону!

Способности морфов добавленные в усиливающие предметы могут не только багаться, добавляя флаг - непрерываемый но и вполне успешно изменять одну боевую единицу в другую.
Правда тут нужен свой неповторимый рецепт, который подойдет нам только если мы захотим превратить наземную боевую единицу в летающую ( все необходимые анимации + высота взлета прилагаются )
Итак компоненты:
  • Способность 'Aave' (avengerform) RUS Сфинкс 2 штуки. Если вдруг вы собрались остаться вороной навсегда, хватит и одной.
  • Два героя (юнита), один наземный что является его нормальной формой а второй воздушный для взлета в воздух.
  • Две дамми руны, рецепт изготовления коих я описал выше. Для желающих каркать до конца своих дней хватит и одной...
Далее начинаем настройку способностей:
- Все параметры в 0, такие как длительность воздействия, иконки и положение кнопок на карте команд.
- Нормальная форма боевой единицы - наш наземный герой (юнит)
- Альтернативная форма боевой единицы - наш летающий герой (юнит)
- Флаги - Немедленное приземление, Немедленный взлёт, Непрерываемый, Постоянное. ( все кроме Требуется оплата )
- Длительность регулировки высоты и Время задержки приземления настраиваем по вкусу.
Должно получится вот это:
Далее помещаем наш морф в заранее заготовленную дамми руну и вручаем герою, результат должен быть примерно таким:
Правда красиво, а самое главное такой морф не сбивает текущие приказы героя и не блокируется такими эффектами как оглушение или безмолвие, главное чтобы инвентарь героя был активен!
Но как же вернутся на землю, если нам надоело летать и каркать? Переставить формы юнита в настройках морфа - а вот фиг вам, тут нужен свой рецепт!
Настраиваем вторую способность на основе 'Aave' (avengerform) RUS Сфинкс , которую мы приготовили для обратного превращения, и так настраиваем:
- Все параметры в 0, такие как длительность воздействия, иконки и положение кнопок на карте команд.
- Нормальная форма боевой единицы - наш наземный герой (юнит)
- Альтернативная форма боевой единицы - наш летающий герой (юнит)
- Флаги - Немедленное приземление, Немедленный взлёт, Непрерываемый. ( все кроме Требуется оплата и Постоянное )
- Длительность регулировки высоты и Время задержки приземления настраиваем по вкусу.
Должно получится вот это:
Далее помещаем наш морф в заранее заготовленную дамми руну и вручаем герою который летает в небе (обязательно воздушному, с наземным ничего не произойдет)
И наш Ужас летящий на крыльях ночи приземлится, при этом проигрывая анимацию смерти - не пугайтесь, это всего лишь анимация от которой легко избавится, кол-во здоровья, баффы, приказы - все это останется на месте.
Карта пример про Ужас летящий на крыльях ночи ссылка
Данный метод перевоплощений работает только при морфе из наземного в воздушный и никак иначе, для того чтобы морфунтся в боевую единицу того же типа перемещения используются другие основы и настройки, о которых я расскажу немного позже...
Вот пока не до конца готовый тест мап, в таверне выбираем тест дуэли и любуемся:

Во имя Азары, или морфы наземных \ земноводных

До этого мы рассматривали как же нам превратить наземного юнита в воздушного и обратно, увы но тот способ подходит для превращений юнитов с разным типом перемещения, а как же нам быть если мы хотим превратить одного юнита в другого с тем же типом перемещения?
Все очень просто, нам потребуется способность на основе 'AEme' (metamorphosis) немного смекалки и терпения.
Итак компоненты:
  • Способность 'AEme' (metamorphosis) RUS Перевоплощение 2 штуки. Если вдруг вы собрались остаться в одной форме навсегда, хватит и одной.
  • Два героя (юнита), одного и того же типа перемещения для оригинала и альтернативы, прочее не имеет значения.
  • Две дамми руны, рецепт изготовления коих я описал выше. Для желающих оставить все как есть хватит и одной...
Далее начинаем настройку способностей:
- Все параметры в 0, такие как длительность воздействия, иконки и положение кнопок на карте команд.
- Нормальная форма боевой единицы - наш наземный герой (юнит) в которого мы хотим превратится.
- Альтернативная форма боевой единицы - либо оригинал, либо любой другой герой (юнит) с тем же типом перемещения
- Флаги - Непрерываемый ( Короче оставляем как есть )
Должно получится вот это:
Далее помещаем наш морф в заранее заготовленную дамми руну и вручаем наземному герою и наш герой сменится другим, при этом анимации будут в норме, герой сохранит все баффы, предметы, приказы.
Для тех кто хочет вернутся назад, превратив юнита обратно, в того кем он был до получения руны нужно сделать второй морф.
Настройки второго морфa:
- Все параметры в 0, такие как длительность воздействия, иконки и положение кнопок на карте команд.
- Нормальная форма боевой единицы - Тот кем мы были до морфа ( т.е начальная форма героя до морфа )
- Альтернативная форма боевой единицы - Тот кто мы сейчас есть (т.е альт форма нашего героя (юнита)
- Флаги - Непрерываемый ( Короче оставляем как есть )
Должно получится вот это:
Далее помещаем наш морф в заранее заготовленную дамми руну и вручаем нашему альтернативному герою и он тут же превратится в обычного, кем был до морфа при этом проигрывая анимацию смерти - не пугайтесь, это всего лишь анимация от которой легко избавится, кол-во здоровья, баффы, приказы - все это останется на месте.
Хардкодные цели
Это цели способности указанные в движке Warcraft 3 и не подлежащие изменению с уровня редактора объектов или кода карты.
Яркий пример - 'AHhb' (holybolt) RUS Благодать - способность паладинов, лечащая союзников и наносящийся урон враждебной нежити, вот эту самую враждебную нежить нельзя убрать никак, при попытки применять благодать в союзника с классификацией Нежить - будет выдана ошибка -Неподходящая цель, укажите на враждебную нежить или дружественное живое существо
Впервые услышал этот термин от DracoL1ch.
Этот параметр не могут игнорировать ни руны ни орбы.
Предложите название в комментариях
Удивительно но часть способностей не требующие указания цели оказываются применяются на самого применившего, эти способности как раз в своём большинстве не сбивают текущих приказов применившего их юнита.
Сокрытие
native ShowUnit takes unit whichUnit, boolean show returns nothing
На GUI:
Это действие скрывает юнита с карты, но позволяет ему взаимодействовать с игровым миром в том числе подбирать предметы, яркий пример сокрытия это способности:
'AOmi' (mirrorimage ) RUS Иллюзия - Мастер клинка, 'ACcy' (cyclone) RUS Смерч способность друидов-ворон а так же предметов и прочей шушеры, 'ANef' (elementalfury) RUS Три стихиии красочная способность панды пивовара.
Обычно стандартные способности еще и оглушают или паузят юнита, поэтому проверите взаимодействие с каждой способностью
Прерываемое
Это способности требующие от героя (юнита) приминающего это заклинание стоять неподвижно, чтобы эффект заклинания продолжался, при этом безмолвия или оглушения могут сбить эффект этой способности, потому они называются прерываемыми.
Примеров таких способностей много: 'AHbz' (blizzard) RUS Буран , как и огненный дождь и прочие.
Морфы
Морфы это большая категория способностей, главным эффектом которых является замена одного юнита другим, альтернативным - при этом сохраняя все параметры оригинала, включая баффы, приказы, бонусы, предметы.
Вспомните охотника на демонов, его ульт 'AEme' (metamorphosis) RUS Перевоплощение изменяет его на демона с дальней атакой и увеличенным здоровьем.
Морфы довольно разнообразные способности с разным поведением в зависимости от настроек и параметров юнитов оригинала и альтернативы.
P.S Пока это все, дальше будет интереснее, не переключайтесь!
Напишите чего не хватает, мб что то не очень подробно, позже будет тестмап.
`
ОЖИДАНИЕ РЕКЛАМЫ...
32
Для героя, морф только в героя! Для юнита морф только в юнита, для здания морф только в здание - иначе не выйдет.
Перепробовал не все, часть фишек я делал давно и забыл как.
Все не получается сделать таймер длительности на юните который можно обновлять сколько влезет.
15
quq_CCCP, благодарю, полезная статейка. Картой занимаюсь около 3 лет, а о таких полезных фитчах руны не слыхал!
4
Добрый день! У меня появилась такая проблема с некоторыми усиливающими предметами, когда носильщик на моей карте берёт с магазинов или с земли подобные вещи как сила +3 или ловкость +5, то крашится варкрафт вылетая.
49
KoGader:
Добрый день! У меня появилась такая проблема с некоторыми усиливающими предметами, когда носильщик на моей карте берёт с магазинов или с земли подобные вещи как сила +3 или ловкость +5, то крашится варкрафт вылетая.
это из за того что предмет используется сразу, какие условия прокачивать если их нет?
4
molot39:
KoGader:
Добрый день! У меня появилась такая проблема с некоторыми усиливающими предметами, когда носильщик на моей карте берёт с магазинов или с земли подобные вещи как сила +3 или ловкость +5, то крашится варкрафт вылетая.
это из за того что предмет используется сразу, какие условия прокачивать если их нет?
Ну как решить мою проблему, чтобы оставить "Используется сразу"?
32
Увы не герои немогут юзать скиллы на статы, даже если они добавляют 0 к статам игра вылетит с фаталом, либо делайте курьера из героя либо сделайте способность для книги на основе канала, а при событии - юнит получил предмет проверяйте какой предмет он подобрал, если это герой то добавить ему n статов.
11
Обьясните мне герой при перевоплощении должен использовать в качестве альтернативной "летающую ", ? разве иллидан второй его форма летающая, или в его настройках указаны что он относится к наземному типу целей или я вообще не понял как это понять?
32
Maxim105:
Обьясните мне герой при перевоплощении должен использовать в качестве альтернативной "летающую ", ? разве иллидан второй его форма летающая, или в его настройках указаны что он относится к наземному типу целей или я вообще не понял как это понять?
Чтобы из наземного сделать наземного нужно чтобы указать альтернативную форму (неважно какую) а нормальную форму героя в которого ты хочешь превратится.
Так и не найду в себе сил описать остальное .
11
quq_CCCP:
Maxim105:
Обьясните мне герой при перевоплощении должен использовать в качестве альтернативной "летающую ", ? разве иллидан второй его форма летающая, или в его настройках указаны что он относится к наземному типу целей или я вообще не понял как это понять?
Чтобы из наземного сделать наземного нужно чтобы указать альтернативную форму (неважно какую) а нормальную форму героя в которого ты хочешь превратится.
Так и не найду в себе сил описать остальное .
Немного не понял, да, я хочу превратиться из наземного в наземный,
есть герой 1 и герой 2, оба наземные юниты
как сделать чтобы герой превратился в героя 2 с помощью морфа сфинкса, о котором тут написано?
Я сегодня попробую все настроить, сделать я сделаю, мб... только вот пойму-ли, я впервые с этим столкнулся
или ты имеешь ввиду, что сделать 2 руны морфа,
в обоих способностях, альтернативную поставить ( не важно какую)
А в строке нормальная форма, для первой руны-морфа героя 1, а для второй руны герой 2?
49
Maxim105:
Немного не понял, да, я хочу превратиться из наземного в наземный,
есть герой 1 и герой 2, оба наземные юниты
как сделать чтобы герой превратился в героя 2 с помощью морфа сфинкса, о котором тут написано?
Я сегодня попробую все настроить, сделать я сделаю, мб... только вот пойму-ли, я впервые с этим столкнулся
или ты имеешь ввиду, что сделать 2 руны морфа,
в обоих способностях, альтернативную поставить ( не важно какую)
А в строке нормальная форма, для первой руны-морфа героя 1, а для второй руны герой 2?
так то есть раздел вопросы...
11
Побыстрее бы, это узнать чтобы морфунтся в боевую единицу того же типа перемещения используются другие основы и настройки
Я к тому, что герой относится к типу "земноводный", вот это больше всего интересует
32
Все, долгожданное обновление! Теперь есть инфа про наземный морф.
20
С героями все проходит на ура(за исключением решаемых проблем с ресетом маны и дропом предметов при морфе), а вот у юнитов наблюдается непонятное поведение абилок(при выходе из морфа они теряются (но во время морфа они есть) и наоборот). При морфе героев все решается через UnitSetAbilityPermanent для не-дефолтных абилок(указанных в РО), а на юнитах оно не работает... У кого-нибудь отсутствовала такая проблема?
18
Diaboliko, если одинаковая способность есть и у начальной и альтернативной форм, то всё должно работать.
Не сталкивался с такой проблемой.
20
Maniac_91:
Diaboliko, если одинаковая способность есть и у начальной и альтернативной форм, то всё должно работать.
:> делать по руне на каждый тип не-героя, которому хочется загнать флаг "непрерываемый" - жирно.
Не сталкивался с такой проблемой.
В смысле у тебя все работало? Или просто не возился с морфом не-героев?
18
Diaboliko, я имею в виду, что и у основного типа юнита есть своя способность (например, замедление), и у альтернативного. Способность, которая пропадает, так как у альтернативного её просто нет.
Лучше проверить на всякий случай, я так тоже ошибся когда-то)
Diaboliko:
В смысле у тебя все работало? Или просто не возился с морфом не-героев?
Как раз не-геройскими юнитами занимаюсь сейчас)
Как вариант, можно всё же установить "не-дефолтную" способность юниту в РО, а потом заблокировать её для игрока. По ходу игры разблокировать. Но это, естественно, если способность даётся всем юнитам одного типа одновременно.
32
Ну как вариант добавлять абилки снова.
А мобов 100500? Или нет, то благодаря ретурн багу мы можем блокировать абилки, правда это немедленно.
7
таргетные спеллы не Аое
могут ли руны кастовать таргетные спеллы на землю или на юнита не Аое ?
если спелл на юнита можно ли создать руну в позиции таргета, поменять владельца на себя и дать руну на таргета это будет работать?
попробовал так сделать один урон наносит таргет сам себе а другой второй урон уже наношу я может он не успевает
1
Огош! Не знал об этом, очень информативно, спасибо! :)
8
В результате довольно тривиального исследования я выяснил, что все предметы(как минимум руны и сфера яда) после смерти остаются лежать на земле, и не удаляются. Только моделька пропадет или уменьшается. Через UnitAddItem они после этого могут быть положены в инвентарь.
Предположу, что какой-то хитрый игрок с книгами характеристик сможет накрутить себе статов столько, сколько нужно.
28
Удаление предмета сразу после получения его юнитом.
Поверапы после использования имеют 0 хп, они никак не удалятся.
Замена моделей усиливающих предметов на импортные, не содержащие изъяна
Это никак не поможет, потому что это баг не модели, а самих предметов.

У предметов нет разложения, поэтому когда их хп становится 0, они остаются лежать на земле. Кроме того, их нельзя удалить. Чтобы удалить, нужно поставить хп на ненулевое значение, и только тогда они удалятся.

К слову об "исправленной" модели руны. Так стандартная тоже ничего не оставляет.
Загруженные файлы
7
Изыните пжлста, а я один такой удачливый?
Нет это лет 2 год так.
Читал статью как минимум 2 года назад.
Но статья классная, очень помог фокус с возможностью рунами повторить заклинание - "Покой" например, хоть это и можно сделать без рун.
И особенно мощная фишка с дуэлью вышла, правда юзаю с осторожностью.
Очень помогло в то время, когда плохо знал jass.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.