11

» WarCraft 3 / Огненная бомба

Немного отредактировал код, чтобы правильно учитывать высоту юнита
11

» WarCraft 3 / Время действия

rsfghd:
Гуванч, ключ не должен спасать положение, лол)

ArhiMEN, в чём проблема тогда было вывести стрингхэши в глобалки и сделать приватными?
ничего не сломалось бы
сделаю
11

» WarCraft 3 / Огненная бомба

Гуванч:
хорошая система, но код толком не читал, а почему бы не сделать все в одном триггере?
не смог
11

» WarCraft 3 / Время действия

rsfghd:
смотрю тут юзается хэш юнита, а если у меня будут названия совпадать с твоими стрингхэшами и будет происходить перезапись? получается эта наработка поломает челу карту
получается так(
11

» WarCraft 3 / Огненная бомба

rsfghd, касательно того, что некоторые юниты в игноре, то это потому-что там условие на расстояние до крипа

могу предположить только что ты спелл не для юза другими игроками делал, то есть не для импорта, а просто показать, что ты можешь сделать на данный момент
В целом да)
11

» WarCraft 3 / Счётчик Хендлов на WURST

В while поменял местами числа условия и перенёс в таймер переменные
11

» XGM Конкурсы / Конкурс становления героев

Аналогично с FadeS возникли непредвиденные обстоятельста (читай, забил на ВУЗ и поехало...) так что не смогу закончить проект(
11

» WarCraft 3 / Ошибка в способности

Гуванч
  1. Смысл это делать без мемхака, если проще двигать эффект, а не делать нового юнита для этого.
  2. Они у меня двигаются, но не все, в этом проблема, как двигать я знаю
11

» WarCraft 3 / loop

Hate:
может прекратите "обнулять" цифры?
Это старая (относительно) способность, тогда я ещё обнулял цифры)
11

» WarCraft 3 / loop

это уже готовые способности, в первой через цикл создаётся 8-ми угольник из молний, во второй через цикл создаются эффекты и начинают двигаться.
11

» WarCraft 3 / Ошибка в способности

rsfghd, с пораболой я уже разобрался и я не совсем понял,что за структуры?

Сейчас дело в том, что часть "снарядов" надвигается с места. Я решил проверить почему и выяснил, что в среднем у трёх эффектов дистанция равна нулю. Возможно дело в том, что я использую функции МемХака и из-за скорости движения что-то сбивается?
11

» WarCraft 3 / Несколько вопросов про мемхак

Смотри, я делал способность с накопительным эффектом от ударов, механика та же самая.
Пример
//! nocjass
library Horror requires MemoryHackDamageEventHook
    globals
        group HorrorGroup   = CreateGroup()
    endglobals
    
    function HorrorCheckGroup takes nothing returns nothing
        local real HorrorTime = LoadReal(H, GetHandleId(GetEnumUnit()), StringHash("HorrorTime"))
        local effect HorrorEffect = LoadEffectHandle(H, GetHandleId(GetEnumUnit()), StringHash("HorrorEffect"))
        local unit Isazam = LoadUnitHandle(H, GetHandleId(GetEnumUnit()), StringHash("Isazam"))
        local real TargetX = GetUnitX(GetEnumUnit())
        local real TargetY = GetUnitY(GetEnumUnit())
        local real IsazamX = GetUnitX(Isazam)
        local real IsazamY = GetUnitY(Isazam)
        local integer HorrorQuest = LoadInteger(H, GetHandleId(Isazam), StringHash("HorrorQuest"))
        
        if HorrorTime >= 20 then
            set HorrorQuest = 1
            call SaveInteger(H, GetHandleId(Isazam), StringHash("HorrorQuest"), HorrorQuest)
        endif
        
        if SquareRoot((IsazamX - TargetX) * (IsazamX - TargetX) + (IsazamY - TargetY) * (IsazamY - TargetY)) >= 700 then //Указываем желаемую дальность увеличенного снижения ужаса
            set HorrorTime = HorrorTime - 1.5
        else
            set HorrorTime = HorrorTime - 1
        endif
                
        if HorrorTime <= 0 then
            call DestroyEffect(HorrorEffect)
            call GroupRemoveUnit(HorrorGroup, GetEnumUnit())
            set HorrorTime = 0
        else
            call PingMinimapEx(TargetX, TargetY, 1, 255, 0, 0, false)
        endif
        
        call SaveReal(H, GetHandleId(GetEnumUnit()), StringHash("HorrorTime"), HorrorTime)
        
        set HorrorEffect = null
        set Isazam = null
    endfunction
    
    function HorrorCheckAction takes nothing returns nothing
        call ForGroup(HorrorGroup, function HorrorCheckGroup)
    endfunction

    function Damaged_Handler takes unit source, unit target, real dmg returns nothing
        local integer evnt  = GetDamageEventESPData()
        local integer data  = ReadRealMemory(evnt + 0x00)
        local real init_dmg = CleanReal(IndexToReal(ReadRealMemory(evnt + 0x04)))
        local integer flags = ReadRealMemory(data + 0x0C)
        local integer atk_t = ReadRealMemory(data + 0x20)
        local real HorrorTime = LoadReal(H, GetHandleId(target), StringHash("HorrorTime"))
        local effect HorrorEffect
        local unit Isazam
        local integer HorrorQuest = LoadInteger(H, GetHandleId(source), StringHash("HorrorQuest"))
        
        if GetUnitTypeId(source) == 'U000' then // Ставим свой ID Исазама
            call SaveReal(H, GetHandleId(target), StringHash("HorrorTime"), HorrorTime + 2 + HorrorQuest)
            if HorrorTime <= 0 then
                set HorrorEffect = AddSpecialEffectTarget("Abilities\\Spells\\Undead\\UnholyFrenzy\\UnholyFrenzyTarget.mdl", target, "chest")
                call SaveEffectHandle(H, GetHandleId(target), StringHash("HorrorEffect"), HorrorEffect)
                call SaveUnitHandle(H, GetHandleId(target), StringHash("Isazam"), source)
                call GroupAddUnit(HorrorGroup, target)
            elseif (IsFlagBitSet(flags, 0x100) or IsFlagBitSet(flags, 0x101)) and atk_t != 0 and HorrorTime > 0 then
                set HorrorEffect = AddSpecialEffectTarget("Abilities\\Spells\\Undead\\VampiricAura\\VampiricAuraTarget.mdl", source, "origin")
                call DestroyEffectTimer(HorrorEffect, 0.3)
                call SetUnitState(source, UNIT_STATE_LIFE, (GetUnitState(source, UNIT_STATE_LIFE) + init_dmg * 0.2))
            endif
        endif
        
        set HorrorEffect = null
        set Isazam = null
    endfunction

    function Damage_Event takes nothing returns nothing
        call DisableTrigger( GetTriggeringTrigger( ) )
        call Damaged_Handler( GetEventDamageSource( ), GetTriggerUnit( ), GetEventDamage( ) )
        call EnableTrigger( GetTriggeringTrigger( ) )
    endfunction
endlibrary

function InitTrig_Horror takes nothing returns nothing
    local group gMain = CreateGroup()
    local unit uTemp 
    local trigger trTemp = CreateTrigger()
    local trigger HorrorCheck = CreateTrigger()
    
    if true then
        call GroupEnumUnitsInRect( gMain, bj_mapInitialPlayableArea, null )
        loop
            set uTemp = FirstOfGroup( gMain )
            exitwhen uTemp == null
            call TriggerRegisterUnitEvent( trTemp, uTemp, EVENT_UNIT_DAMAGED )
            call GroupRemoveUnit( gMain, uTemp )
        endloop
        call TriggerAddAction( trTemp, function Damage_Event )
    endif
    
    call TriggerRegisterTimerEvent(HorrorCheck, 1, true)
    call TriggerAddAction(HorrorCheck, function HorrorCheckAction)
    
    call DestroyGroup(gMain)
    
    set gMain = null
    set trTemp = null
    set HorrorCheck = null
endfunction

Мне нужно только мемхаки Unit API, Ability API, Item API, Group API, Agent API, а остальное не нужно какие триггеры нужно копировать с этими мемхаками.
Так просто удали остальные триггеры и в триггере InitMemoryHack удали вызов к нимм
11

» WarCraft 3 / Кел'Тузад из Heroes of the Storm

Maxlaid, да я не видел, вспомнил, что видел здесь каст тайм, вот и спросил
11

» WarCraft 3 / Кел'Тузад из Heroes of the Storm

Atesla, а как ты создал время действия эффекта притягивания над личем (ну полоска)?