XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Барахолка
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Если вы хотели бы использовать в своей карте нестандартное, оригинальное заклинание, но у вас не хватает знаний для его реализации, то эта тема специально для вас. В данной теме вы можете оставить заявку на создание необходимого вам заклинания.
Если вам нужно заклинание одного из персонажей DotA, то ищите его здесь
» Шаблон оформления заявки
Название: название заклинания
Способ исполнения: GUI / JASS / всё равно
Цель: вражеский юнит / свой юнит / сам герой / итд.
Для героя: да/нет
MUI: можно ли одновременно использовать заклинание больше одного раза
Описание: здесь описание нужного спелла
По уровням:
  1. здесь параметры на первом уровне
  2. здесь на втором
  3. итд.
Шаблон можно просто скопировать здесь, вставить в свое сообщение и заполнить:
**Название:** 
**Способ исполнения:**
**Цель:**
**Для героя:**
**MUI:**
**Описание:**
**По уровням:**
1. 
2. 
...

» Шаблон оформления ответа
Заклинание: здесь может быть название спелла или номер поста
Заказчик: здесь имя пользователя, который заказал заклинание
Способ исполнения: Jass или GUI
MUI: можно ли одновременно использовать заклинание больше одного раза
Нужен ли JNGP: Да или Нет
Используются глобальные переменные: Да или Нет
Шаблон можно просто скопировать здесь, вставить в свое сообщение и заполнить:
**Заклинание:**
**Заказчик:**
**Способ исполнения:**
**MUI:**
**Нужен ли JNGP:**
**Используются глобальные переменные:**
MUI - Multiplayer
Разрешается просто процитировать сообщение заказа и дописать информацию о получившемся заклинании.

Правила темы:

  • Оформление заявок согласно шаблонам.
  • Запрещено дублирование заявок.
  • Написание заявок понятным русским языком.
  • В пункте "Описание" необходимо максимально подробно описать все действия заклинания.
  • Если все же возникли вопросы у выполняющих заявки людей - редактируем старую заявку (дописываем описание), а не отписываемся дальше!
Заявки, не удовлетворяющие правилам, будут удалены!

Закрытая тема
 
Suite
┌_____┐
offline
Опыт: 11,222
Активность:
Название: Прыжок
Способ исполнения: GUI/(no v/c)Jass
Цель: Точка
Для героя: Да
MUI: Да
Описание: Спелл как обычный прыжок (jump), но когда кастуешь спелл, то можно двигаться вертеться в любую сторону и при этом место приземления меняется (чтоб прыжок был физический, а не обычный как в доте). Но еще и появляется дополнительная способность, которую если нажать то герой резко снижается и наносит урон с замедлением. Когда герой в состоянии прыжка, то он неуязвимый.
По уровням:
  1. Время полета 4 сек., урон 100 ед., замедление скорости и атаки 15%.
  2. Время полета 8 сек., урон 200 ед., замедление скорости и атаки 25%.
Старый 05.04.2012, 06:44
BNKTOPIII
Благодарю Aws за иконки=)
offline
Опыт: 7,147
Активность:
Заклинание: Переработка здоровья
Заказчик: BNKTOPIII
Способ исполнения: GUI
MUI: нет
Для героя: нет, но будет использоваться как героями, так и войсками
Способ исполнения:
Герой начинает применять способность и во время применения ежесекундно теряет по 5 ед. здоровья, восполняя себе +10 ед. маны, если герой сдвинется с места во время применения способности, действие эффекта прекратиться и герой будет восстанавливать и ману и здоровье как обычно. (Что - то типа способности "Покой")
Старый 05.04.2012, 10:17
Vadik29
Choice Battle 1.6а
offline
Опыт: 15,245
Активность:
BNKTOPIII, Вот
Заклинание:Переработка здоровья
Заказчик:BNKTOPIII
Способ исполнения:Jass
MUI:да
Нужен ли JNGP:нет
Используются глобальные переменные:1 ХешТаблица
легко переносится, если хочешь то удалю эффект который я придумал)
Вот версия без эффекта
последний ап
Прикрепленные файлы
Тип файла: w3x ManaRegenByVadik29 v2.w3x (18.3 Кбайт, 4 просмотров )
Тип файла: w3x ManaRegenByVadik29.w3x (18.7 Кбайт, 3 просмотров )

Отредактировано Vadik29, 06.04.2012 в 07:19.
Старый 05.04.2012, 20:55
NIKZ
Изучаю Jass
offline
Опыт: 6,036
Активность:
4)*Ульт*Мессия:
герой исчезает, вместо него появляются 3 его элемента:
I) Дух Леса: значительная защита, магическая неуязвимость, отсутствие атаки, автоматически наносит урон всем, кто применил заклинание рядом (и маг. существам тоже). Владеет способностями "развеять заклинание", "Вылечить" и "Перехватить заклинание"
II) Демон: Средняя защита, возможность применять скиллы "Огненный дождь", "Вызов Огненного Голема ()", "Сон" и "Печать Преисподней", низкая атака
III) Скала: Танк, с низкой скоростью передвижения и отсутствием атаки. Есть лишь скилл "Оскорбление"
Все 3 "элемента" появляются поодаль от места применения скилла. По истечении ? сек., если хоть один из 3-х выжил, на прежнем месте появляется герой. С прежним ХП и Маной
Старый 05.04.2012, 22:31
Dima665

offline
Опыт: 2,956
Активность:
Сделайте пожайлуста этот спелл.
Название:Вихрь Силы
Описание:Герой создаёт вихрь который наносит окружающим 150 урона в секунду(вихрь должен преследовать врагов),длительность сплеа 15 сек.
Для героя:Да
Старый 06.04.2012, 22:56
DaeDR

offline
Опыт: 8,074
Активность:
Заказчик: Xoniks
Название: Adrenaline
Способ исполнения: Jass
Цель: passive (сам юнит)
Для героя: да (только для героя!)
MUI: да
Требуется JNGP: Да
Глобальные переменные: Самоинициализируются (6 штук) Без Хеш-таблицы
Описание: Чем больше врагов вокруг героя в радиусе 400 тем быстрее скорость атаки(10% за юнита) максимум 7 стаков, если здоровье героя станет меньше 20% то увеличить скорость бега до 522 на 5 сек эффект скорости бега может накладываться не чаще чем раз в минуту
» Код
library Adrenaline

    globals
    private unit array HERO
    private integer N = 0
    private group g = CreateGroup ()
    private boolexpr f
    private integer i
    private timer array Timer
    endglobals
    
    define { 
    // === настройки === //
    SPELL = 'AHbh' //Изучаемая способность
    ABILITY_SPEED_ATTACK = 'A000' // Способность для увеличения скорости атаки (1-й уровень должен давать нулевой бонус!)
    ABILITY_SPEED = 'A001' //Способность "Берсерк" для увеличения скорости передвижения
    // чем меньше время перепроверки на юнитов, тем сильнее нагрузка! Если юнитов со способностью много,
    // то время необходимо увеличить! (то же самое и со здоровьем)
    TIME_OUT_ATTACK = 0.3 // время перепроверки на кол-во юнитов в радиусе
    AREA = 400.0 // радиус для увеливения скорости атаки
    TIME_OUT_SPEED = 1.0 // время проверки на здоровье
    TIME_OUT_NULL = 60.0 // время бездействия скорости передвижения после применения
    DEAD_LINE = 0.2//, т.е. 20%. Здоровье, при котором срабатывает ускорение
    }

function Trig_AdrenalineLearn_Conditions takes nothing returns boolean
    if GetLearnedSkill() == SPELL then
        return ( GetUnitAbilityLevel(GetTriggerUnit(), SPELL) == 1 )
    endif
    return false
endfunction

//для таймера на проверку здоровья (Для каждого юнита - свой)
function Trig_AdrenalineLearn_Life_Timer takes nothing returns nothing
    local integer j = 1
    local real hp
    loop { exitwhen ( GetExpiredTimer() == Timer[j] )
    j++ }
    if ( GetUnitState(HERO[j], UNIT_STATE_LIFE) > 0.0 )
    if TimerGetTimeout(Timer[j]) == TIME_OUT_SPEED {
        set hp = GetUnitState(HERO[j], UNIT_STATE_LIFE)/GetUnitState(HERO[j], UNIT_STATE_MAX_LIFE)
        if hp < DEAD_LINE then
            call UnitAddAbility ( HERO[j], ABILITY_SPEED )
            call IssueImmediateOrder( HERO[j], "berserk" )
            call UnitRemoveAbility( HERO[j], ABILITY_SPEED )
            call TimerStart ( Timer[j], TIME_OUT_NULL, false, function Trig_AdrenalineLearn_Life_Timer )
        endif
    else
        call TimerStart ( Timer[j], TIME_OUT_SPEED, true, function Trig_AdrenalineLearn_Life_Timer )
    }
    endif
endfunction

//для таймера на проверку кол-ва юнитов
function Trig_AdrenalineLearn_Filter takes nothing returns boolean
    return (GetUnitState(GetFilterUnit(), UNIT_STATE_LIFE) > 0.00)and(IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(HERO[i])))and(IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false)
endfunction
    
function Trig_AdrenalineLearn_ChooseNUnits_Timer takes nothing returns nothing
    set i = 1
    loop { exitwhen i > N
        if ( GetUnitState(HERO[i], UNIT_STATE_LIFE) > 0.0 ) then
            call GroupEnumUnitsInRange ( g, GetUnitX(HERO[i]), GetUnitY(HERO[i]), AREA, f )
            set bj_groupCountUnits = 0
            call ForGroup ( g, function CountUnitsInGroupEnum )
            call SetUnitAbilityLevel ( HERO[i], ABILITY_SPEED_ATTACK, bj_groupCountUnits + 1 )
            call GroupClear (g)
        endif
    i++ }
endfunction

function Trig_AdrenalineLearn_Actions takes nothing returns nothing
    local timer t
    if N == 0 then
        set t = CreateTimer () //для уровня способности
        call TimerStart ( t, TIME_OUT_ATTACK, true, function Trig_AdrenalineLearn_ChooseNUnits_Timer )
    endif
    N++
    set Timer[N] = CreateTimer () //для проверки здоровья
    call TimerStart ( Timer[N], TIME_OUT_SPEED, true, function Trig_AdrenalineLearn_Life_Timer )
    set HERO[N] = GetTriggerUnit()
    call UnitAddAbility( GetTriggerUnit(), ABILITY_SPEED_ATTACK )
    set t = null
endfunction

//===========================================================================
function InitTrig_AdrenalineLearn takes nothing returns nothing
    set gg_trg_AdrenalineLearn = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_AdrenalineLearn, EVENT_PLAYER_HERO_SKILL )
    call TriggerAddCondition( gg_trg_AdrenalineLearn, Condition( function Trig_AdrenalineLearn_Conditions ) )
    call TriggerAddAction( gg_trg_AdrenalineLearn, function Trig_AdrenalineLearn_Actions )
    set f = Condition (function Trig_AdrenalineLearn_Filter)
endfunction

endlibrary
Постарался как мог для снижения нагрузки на вар.
Xoniks, если у способности будет несколько уровней, то напиши, что конкретно будет усиливаться
DaeDR добавил:
Заказчик: Impertus
Название: Метка ворона
Способ исполнения: Jass
MUI: да
Для героя: да
Требуется JNGP: Да
Глобальные переменные: Хеш-таблица
Описание: Герой вешает метку на цель: если цель дружественная, то герой получает 5\10\15\20\25% урона вместо цели; если цель вражеская, то герой восполняет здоровье в размере 5\10\15\20\25% от урона, полученного отмеченным врагом.
то, как это сделал Ancient, просто ужасно непродуманно!
Прикрепленные файлы
Тип файла: w3x Adrenaline.w3x (19.5 Кбайт, 7 просмотров )
Тип файла: w3x Metka vorona.w3x (18.5 Кбайт, 4 просмотров )
Старый 07.04.2012, 14:43
Gream_rip

offline
Опыт: 15
Активность:
  1. Название способности: Мёртвая зона
  2. Описание способности в общем виде: В указанной области создаётся некая зона(400 АоЕ), в которой все юниты противника ежесекундо получают урон их скорость передвижения сильно снижается. Если после попадания в эту зону юнит покинет её - получит некий урон (в идеале: урон, который юнит не успел получить х2). Те кто заходит в зону после её создания могут остаться нетронутыми или начать получать урон или как вам будет удобно и легче написать.
3.Описание способности - уровни:
Уровень 1 - Урон в секунду 80; время действия 3 секунды; замедление 80%
Уровень 2 - Урон в секунду 100; время действия 4 секунды; замедление 85%
Уровень 3 - Урон в секунду 120; время действия 5 секунды; замедление 90%
Уровень 4 - Урон в секунду 140; время действия 6 секунды; замедление 95%
Уровень 5 - Урон в секунду 160; время действия 7 секунды; замедление 100%
  1. Относится к: Герою
  2. Тип цели: Точка
  3. Метод исполнения: GUI
  4. Мультиприменяемость: Не обязательно
Важно:
1)Замедление действует на ВСЕХ противников в указанной зоне
2)Отпишите в коментариях к триггеру что произойдет с вошедшими в зону после её созданияпо
3)Эта зона должна хоть как то быть видна (смена временная текстуры земли или анимация или кольцо ауры, опять же: как вам будет удобнее это изобразить))
Старый 07.04.2012, 15:21
Impertus

offline
Опыт: 4,019
Активность:
DaeDR, спасибки, если сможешь, сделай такое:

Название: Буран v.2
Уровни: 5
МУИ: обязательно
Способ исполнения: не важен
Для героя: да
Описание: На указанную область обрушивается град ледяных осколков. 6 волн за 6 сек, 1я волна - 1 осколок, аое 50, 2я волна - 3, аое 150 и т.д. до 9 осколков на последней волне с аое 450. Каждый осколок наносит 15\30\45\60\75 урона. Не чаннел.
Сам я такое сделал (30 уровней спелла), только на МУИ перевести не удалось.
Старый 08.04.2012, 23:14
DaeDR

offline
Опыт: 8,074
Активность:
Impertus, 2 вопроса
  • Каждый осколок наносит урон по маленькой области? (например: 50AOE). Или Наносится суммарный урон (исходя из кол-ва осколков) по области?
  • За осколок взять обычную модель из бурана? (исходя из названия)
Старый 09.04.2012, 10:05
English

offline
Опыт: 10
Активность:
  1. Название способности: Перевоплощение
  2. Относится к: Герою
  3. Тип цели: Пассивная способность
  4. Метод исполнения: GUI
  5. Мультиприменяемость: ответить не могу ибо не знаю что это такое)
  6. Общий вид: Нет
7.1 Принцип такой,наступает ночь и герой перевоплощается в волка,наступает день и он снова приобретает прежний вид.
Старый 09.04.2012, 11:37
rPeg_

offline
Опыт: 186
Активность:
Здравствуйте.
Перейду сразу к сути. Мне нужен скилл по типу иллюзии МК но намного красочней. Идея в том чтобы при использовании этого скилла кастер не просто создавал иллюзии, а исчезал а на его месте создавались 2-4 модели огоньков которые подлетают в воздух и красиво разлетаются в рандомном направлении и на разное расстаяние. Количество огоньков-иллюзий зависит от уровня каста а вероятность с которой кастер появится в одной из сторон падения огонька равна 50-33-25%. Отблагодарю в своем проекте.
Старый 09.04.2012, 16:27
DaeDR

offline
Опыт: 8,074
Активность:
Заказчик: Impertus
Название: Буран v.2
MUI:да
Исполнение: Jass
JNGP: да
Глобальные переменные: Хеш-таблица
Описание: На указанную область обрушивается град ледяных осколков. 6 волн за 4,8 сек, С каждой новой волной +2 осколка и +85к aoe. Каждый осколок наносит 15\30\45\60\75 урона.
Способность получилась "убойной", особенно на 5-6 волне
DaeDR добавил:
Сделал, как было удобней. Если нужен первоначальный вариант, то могу "исправить".
Прикрепленные файлы
Тип файла: w3x Buran.w3x (22.5 Кбайт, 17 просмотров )
Старый 09.04.2012, 16:56
MIW Inc

offline
Опыт: 1,500
Активность:
Название: Sadist
Способ исполнения: Любой
Цель: Нет цели
Для героя: Да
MUI: Обязательно
Описание: Герой изучивший эту способность будет восстанавливать себе ману в количестве (%) нанесенного урона вражеским юнитам
По уровням: 4 Уровня
4%.5%.6%.7% от нанесенного урона врагам
(учитывается любой вид урона)
(отсчет кол-ва восстанавливаемой маны в % должно отсчитываться от кол-ва нанесенного урона после понижения магической и физической броней)
Заранее спасибо!
Старый 09.04.2012, 17:54
Vadik29
Choice Battle 1.6а
offline
Опыт: 15,245
Активность:
ZKey, вот система получения урона на GUI в нее вставь 1 действие (думаю сам додумаешься какое) и очисть все ненужное и будет тебе счастье
У самого есть предмет в карте который дает вампиризм по мане)

Отредактировано Vadik29, 09.04.2012 в 18:28.
Старый 09.04.2012, 17:58
Impertus

offline
Опыт: 4,019
Активность:
Спасибо, сойдет, я разберусь - перебалансирую урон. А такой сможешь?

Название: Маленькие хитрости
Для героя: да
МУИ: да
Уровни: 5
Способ исполнения: не важен
Тип: пассивный
Описание: Атакуя врага (только врага, важно), герой может с вероятностью 7% может оглушить текущую цель на 1 сек и, при наличии в области 400\450\500\550\600 более 6\5\5\4\4 врагов, телепортироваться за спину случайной видимой вражеской цели в области и нанести ему удар с дополнительными 10\15\20\25\30 урона, при этом становясь неуязвимым. После нанесения удара он возвращается к первоначальной цели и продолжает атаковать её. Если в области 400\450\500\550\600 врагов меньше 6\5\5\4\4 шт., то оглушение увеличивается на 0.3\0.6\1\1.3\1.5 сек. Перезарядка умения (и оглушения и телепортации) 15\13\10\7\5 сек.
Старый 09.04.2012, 18:07
vladfaust

offline
Опыт: 12,814
Активность:
Добрый день всем!
Нужна помощь в создании простого спелла.
MUI, не важно какой способ исполнения.
Суть вот в чем. При вызове вашей функции (условно - "slow(unit u, integer count)"), данному юниту добавляется count% замедления. Каждые n милисекунд замедление сбрасывается на 1%. Все просто. Сам сделать не могу, ибо нуб.
Для профи: структуры исключить. И макросы. Спасибо.
Старый 09.04.2012, 19:24
DaeDR

offline
Опыт: 8,074
Активность:
Заказчик: Impertus
Название: Маленькие хитрости
MUI: да
Исполнение: Jass
Тип: пассивный
JNGP: да
Глобальные переменные: Хеш-таблица
Описание: Атакуя врага, герой может с вероятностью 7% может оглушить текущую цель на 1 сек и, при наличии в области 400\450\500\550\600 более 6\5\5\4\4 врагов, телепортироваться за спину случайной видимой вражеской цели в области и нанести ему удар с дополнительными 10\15\20\25\30 урона, при этом становясь неуязвимым. После нанесения удара он возвращается к первоначальной цели и продолжает атаковать её. Если в области 400\450\500\550\600 врагов меньше 6\5\5\4\4 шт., то оглушение увеличивается на 0.3\0.6\0.9\1.1\1.3 сек. Перезарядка умения (и оглушения и телепортации) 15\13\11\9\7 сек.
Исправлено: Если врагов меньше 6/5/4, то герой продолжает атаковать цель (а не переключается на другую, как было)
Если найдете ошибку или недочет, сообщите хотя вроде все норм
Есть еще второй триггер, который активирует данный при его прокачке. И увеличивает уровень пустышек
» Код
library Tricks

    globals
    private integer j
    private constant string DAMMY_ORDER = "creepthunderbolt" // Приказ даммику
    private constant string HERO_ORDER = "berserk" // Приказ на "Берсерк"
    private constant boolean PASHE = true // При "переносе" герой может проходить сквозь все!
    private constant boolean INVUR = true // Неуязвимость при "переносе"
    endglobals
    
    define {
    // перенести будет "сложно"
    // Очень внимательно измените равкоды способностей! (иначе будет куча глюков)
    private SPELL_LEAN = 'A001' // изучаемая способность
    private SPELL_NULL = 'A000' // способнсть - пустышка (пассивка для показания описания, если нет перезарядки)
    private SPELL_COOL = 'A002' // способность "Берсерк" для перезарядки способности
    private SPELL_ATTACK = 'A003' // способность +атака для увеличения урона
    private BAFF_BERSERK = 'Bbsk' // Бафф перезаряжаемой способности "Берсерк"
    private DAMMY = 'h000' // Даммик (достаточно, чтобы он был невидимый и летающий)
    private SPELL_STAN = 'A004' // Способность - Стан, которая дается даммику
    private BAFF_STAN = 'BPSE' // Бафф стана для снятия
        // настройки //
    private COOL = 17.0 - 2.0*lvl // где lvl - уровень способности. 
                         //Перезарядка здесь должна совпадать с перезар. в способности "Берсерк"
    private STAN = 1.0 // Время стана, если герой "переносится"
    private STAN_ADD = 1.0 + 0.3*lvl // Стан, если герой "не переностися". Где lvl - уровень способности
    private NAMBER = 5-(lvl/2) // Кол-во юнитов для "переноса". Где lvl - уровень способности
    private DIST = 80.0 // Дальность героя от противника при "переносе"
    private TimE = 1.0 // Время атаки сзади. После этого времени - обратно
    private CHANCE = 7 // Шанс на активацию. Можно задействовать lvl, например: 6+lvl
    }
// Фильтр врагов, на которых герой может "прыгнуть"
function Trig_Tricks_Filter takes nothing returns boolean
    return (IsUnitVisible(GetFilterUnit(), GetOwningPlayer(GetAttacker())))and(GetTriggerUnit()!=GetFilterUnit())and(GetUnitState(GetFilterUnit​(), UNIT_STATE_LIFE) > 0.00)and(IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(GetAttacker())))and(IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false)
endfunction
// Выбор случайного юнита
function Trig_Tricks_RandomUnits takes nothing returns nothing
    set bj_groupCountUnits = bj_groupCountUnits + 1
    if bj_groupCountUnits == j then
        set bj_groupRandomCurrentPick = GetEnumUnit()
    endif
endfunction
// Снятие оглушения
function Trig_Tricks_Stan_Timer takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer h = GetHandleId(t)
    local unit u = LoadUnitHandle ( udg_Hash, h, 1 )
    call UnitRemoveAbility( u, BAFF_STAN )
    call FlushChildHashtable ( udg_Hash, h )
    set u = null
    call DestroyTimer (t)
    set t = null
endfunction
// Функция оглушения
function Trig_Tricks_Stan takes unit u, real time returns nothing
    local timer t = CreateTimer ()
    local unit dammy = CreateUnit ( Player(15), DAMMY, GetUnitX(u), GetUnitY(u), 0.0 )
    call UnitAddAbility( dammy, SPELL_STAN )
    call UnitApplyTimedLife( dammy, 'BTLF', 2.0 )
    call IssueTargetOrder( dammy, DAMMY_ORDER, u )
    call SaveUnitHandle ( udg_Hash, GetHandleId(t), 1, u )
    call TimerStart ( t, time, false, function Trig_Tricks_Stan_Timer )
    set dammy = null
    set u = null
    set t = null
endfunction
// Удаление способности для перезарядки
function Trig_Tricks_Timer_Cool takes nothing returns nothing
    local timer t = GetExpiredTimer ()
    local integer h = GetHandleId(t)
    local unit u = LoadUnitHandle ( udg_Hash, h, 1 )
    local integer lvl = GetUnitAbilityLevel ( u, SPELL_LEAN )
    call UnitRemoveAbility ( u, SPELL_COOL )
    call UnitAddAbility ( u, SPELL_NULL )
    call SetUnitAbilityLevel ( u, SPELL_NULL, lvl )
    call FlushChildHashtable ( udg_Hash, h )
    set u = null
    call DestroyTimer (t)
    set t = null
endfunction
// Таймер возврата
function Trig_Tricks_Timer_Return takes nothing returns nothing
    local timer tim = GetExpiredTimer ()
    local integer h = GetHandleId(tim)
    local unit u = LoadUnitHandle ( udg_Hash, h, 1 )
    local unit t = LoadUnitHandle ( udg_Hash, h, 4 )
    local real x = LoadReal ( udg_Hash, h, 2 )
    local real y = LoadReal ( udg_Hash, h, 3 )
    local real angle
    if PASHE then
        call SetUnitPathing( u, true )
    endif
    if INVUR then
        call SetUnitInvulnerable ( u, false )
    endif
    call UnitRemoveAbility ( u, SPELL_ATTACK )
    call SetUnitPosition ( u, x, y )
    set angle = bj_RADTODEG * Atan2(GetUnitY(t) - GetUnitY(u), GetUnitX(t) - GetUnitX(u))
    call SetUnitFacing ( u, angle )
    call IssueTargetOrder( u, "attack", t )
    set u = null
    set t = null
    call DestroyTimer (tim)
    set tim = null
endfunction
// Телепорт героя к цели, запуск таймера возврата
function Trig_Tricks_Timer_MoveTP takes unit u, unit t, unit c returns nothing
    // u - герой
    // t - цель
    // c - первоначальная цель
    local real angle = GetUnitFacing(t)
    local real x = GetUnitX(t) + -DIST * Cos(angle * bj_DEGTORAD)
    local real y = GetUnitY(t) + -DIST * Sin(angle * bj_DEGTORAD)
    local timer tim = CreateTimer ()
    local integer h = GetHandleId(tim)
    call SaveUnitHandle ( udg_Hash, h, 1, u )
    call SaveReal ( udg_Hash, h, 2, GetUnitX(u) )
    call SaveReal ( udg_Hash, h, 3, GetUnitY(u) )
    call SaveUnitHandle ( udg_Hash, h, 4, c )
    call TimerStart ( tim, TimE, false, function Trig_Tricks_Timer_Return )
    call SetUnitPosition ( u, x, y )
    call SetUnitFacing ( u, angle )
    call SetUnitAnimation( u, "attack" )
    call IssueTargetOrder( u, "attack", t )
    set u = null
    set t = null
    set c = null
    set tim = null
endfunction
// Основное действие
function Trig_Tricks_Actions takes nothing returns nothing
    local unit u = GetAttacker ()
    local integer i = GetRandomInt (1,100)
    local integer lvl = GetUnitAbilityLevel ( u, SPELL_LEAN )
    if i <= CHANCE then
        local group g = CreateGroup ()
        local boolexpr f = Condition (function Trig_Tricks_Filter)
        call GroupEnumUnitsInRange ( g, GetUnitX(u), GetUnitY(u), 350+50*lvl, f )
        set bj_groupCountUnits = 0
        call ForGroup ( g, function CountUnitsInGroupEnum )
        if bj_groupCountUnits >= NAMBER then
            set j = GetRandomInt ( 1, bj_groupCountUnits )
            set bj_groupCountUnits = 0
            call ForGroup ( g, function Trig_Tricks_RandomUnits )
            call UnitRemoveAbility ( u, SPELL_NULL )
            call UnitAddAbility ( u, SPELL_COOL )
            call SetUnitAbilityLevel ( u, SPELL_COOL, lvl )
            call UnitAddAbility ( u, SPELL_ATTACK )
            call SetUnitAbilityLevel ( u, SPELL_ATTACK, lvl )
            call IssueImmediateOrder( u, HERO_ORDER )
            if PASHE then
                call SetUnitPathing( u, false )
            endif
            if INVUR then
                call SetUnitInvulnerable ( u, true )
            endif
            call Trig_Tricks_Timer_MoveTP ( u, bj_groupRandomCurrentPick, GetTriggerUnit() )
            call Trig_Tricks_Stan (GetTriggerUnit(), STAN)
        else
            call Trig_Tricks_Stan (GetTriggerUnit(), STAN_ADD)
            call UnitRemoveAbility ( u, SPELL_NULL )
            call UnitAddAbility ( u, SPELL_COOL )
            call SetUnitAbilityLevel ( u, SPELL_COOL, lvl )
            call IssueImmediateOrder( u, HERO_ORDER )
            call UnitRemoveAbility ( u, BAFF_BERSERK )
            call IssueTargetOrder( u, "attack", GetTriggerUnit() )
        endif
        local timer t = CreateTimer ()
        call SaveUnitHandle ( udg_Hash, GetHandleId(t), 1, GetAttacker() )
        call TimerStart ( t, COOL, false, function Trig_Tricks_Timer_Cool )
        call DestroyBoolExpr (f)
        call GroupClear (g)
        call DestroyGroup (g)
    endif
    set u = null
    set t = null
    set f = null
    set g = null
endfunction

//===========================================================================
function Trig_Tricks_Conditions takes nothing returns boolean
    if GetUnitAbilityLevel(GetAttacker(), SPELL_NULL) > 0 then
        return (IsUnitEnemy(GetAttacker(), GetOwningPlayer(GetTriggerUnit())))and(IsUnitType(GetTriggerUnit(), UNIT_TYPE_STRUCTURE) == false)
    endif
    return false
endfunction
function InitTrig_Tricks takes nothing returns nothing
    set gg_trg_Tricks = CreateTrigger(  )
    call DisableTrigger( gg_trg_Tricks )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Tricks, EVENT_PLAYER_UNIT_ATTACKED )
    call TriggerAddCondition( gg_trg_Tricks, Condition( function Trig_Tricks_Conditions ) )
    call TriggerAddAction( gg_trg_Tricks, function Trig_Tricks_Actions )
endfunction

endlibrary
Impertus, ну и заказики пошли)
Прикрепленные файлы
Тип файла: w3x Tricks.w3x (22.9 Кбайт, 10 просмотров )

Отредактировано DaeDR, 11.04.2012 в 15:38.
Старый 09.04.2012, 20:22
Impertus

offline
Опыт: 4,019
Активность:
Спасибки, я сам такие делал, только на ГУИ и с мудоханьем уровней спеллов и кучей взаимозапускаемых триггеров, и, понятное дело, не МУИ, а хотелось)

Название: Пламенное сердце
Уровни: 1
Для героя: да
МУИ: обязательно
Способ исполнения: не важен
Тип: актив, чаннел
Описание: Герой начинает сгорать в собственном пламени, теряя 10% от текущего здоровья в сек. в течении 7 сек. и нанося такой же урон всем врагам в 400 аое и половинный урон в 400-800 аое. Чаннел, если прервать - герой будет продолжать гореть,но урон врагам не будет наноситься; если же герой умирает под воздействием этого эффекта (не прерванного), то он взрывается, нанося всем (и своим и чужим) урон в размере величины макс запаса жизни.

Отредактировано Impertus, 10.04.2012 в 01:11.
Старый 10.04.2012, 00:22
Cosonic5
Моймозггоритогнем
offline
Опыт: 13,584
Активность:
Название: Кожа Ящера
Способ исполнения:Jass или Gui
Цель:Враг Воин,герой
Для героя:Да
MUI:нет потом сам настрою если надо будет
Описание:
Ящер накладывает на союзного героя или на себя Крепкую кожу от чего у цели повышается защита.
Если Ящер наложит щит на себя, то враг при нападении будет получать урон равный колличеству ударов совершенных по герою*на уровень способности + Сила героя включить бонусы. Время действия способности 5-7 сек, тоесть после 5-7 сек враг должен получить весь урон по выше указанной формуле.
Тоесть к примеру враг совершит 14 ударов*2 Уровень способности=28+Сила героя ну скажем 30 и того урон будет равен 58 ед урона. Если цель союзник, то герой получит бонус в виде +4 ед дополнительной защиты на всех уровнях. Но при этом, кастер тот что поставил Щит, получит доп мини спелл на всех уровнях, при его использовании щит наложенный на союзника взрывается и наносит всем врагам в области 315 ед по урону указанному по формуле выше+50/70/90/120 ед урона в области 425 ед.. да взрыв как бы еще доп урон наносит и даже тем кто не окажется в области 315 ед.
По уровням:
1 уровень Прирост защиты от Щита 3 ед
2 Уровень Прирост защиты от Щита 6 ед
3 Уровень Прирост защиты от Щита 9 ед.
Спасибо тем кто сделает спелл.(Для проекта)
Старый 10.04.2012, 11:50
Suite
┌_____┐
offline
Опыт: 11,222
Активность:
Название: Иллюзионный удар
Способ исполнения: gui/jass(no c/v)
Цель: Точка
Для героя: да
MUI: да желательно
Описание: Воин (пехотинец) с разбега (с анимацией защиты) идет вперед и наносит всем юнитам на расстоянии 250 АоЕ 200 ед. урона. При беге юнита скорость 522 можно остановить заклинание, но герой замедляется на 5 сек. 25%. Также при беге появляются иллюзии героя в направлении точки и исчезают через 3 секунды. (они тоже бегают :)
Старый 11.04.2012, 16:59
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 19:20.