32

» WarCraft 3 / Переключение атаки через улучшение.

Extremator, атаки изначально не должно быть + цели основной и второй атаки должны быть взаимоисключающими. Так что думаю не вариант
32

» WarCraft 3 / Как сделать полный разбор/декомпиляцию карты?

Какой такой программой? В редакторе чтобы карта открывалась юзают депротекторы, увы все раз и все не получится. Потребуются собственные познания по устройству карты и реализации в ней тех или иных вещей.
32

» WarCraft 3 / Хак на память Warcraft3

Она берет адресс абилки у юнита, т.е GetUnitAbility( unit, abilid) вернет число, смотрим что оно выше 1, тогда проверяем этой функцией в кд ли абилка, отмечу что данная функция возвращает буль а не кол-во сек. до конца кулдауна, если вам нужно время оставшегося до готовности абилки, есть другая функция GetAbilityCurrentCooldown или как то так.
А кстати есть новый мх на 1.28+
Разбираем его принципы работы...
32

» WarCraft 3 / Кастом гуи и прочие говно функци UMSWE

Не я код целиком уже вытащил док, прост вместо эироглифов в JASS craft крикозябры, немогу перевести гугл переводчиком + хотелось чтобы все было в vjass виде, есть идеи как убрать несовместимость для обычного JNGP?
32

» WarCraft 3 / Blizzard готовят Producer Update для Warcraft 3

ZlaYa1000, оно самое, осталось разобрать все и перевести иэроглифы на русский язык + сделать открываемым в редакторе.
32

» WarCraft 3 / Blizzard готовят Producer Update для Warcraft 3

Уже создал тему, осталось наладить открываем ость в наших редакторах, есть тест карта с китайским гуи + мемхаком работающим на все версии вара.
32

» WarCraft 3 / Blizzard готовят Producer Update для Warcraft 3

Ребята Китайцы изобрели мемхак на 1.28+, так что близзардов можно послать лесом.
32

» WarCraft 3 / Высота юнита GetUnitZ

Ну этим кодом высоту юнита не найдешь, нужна либо бд либо мемхак, насколько помню готовой функции нет, но нам нужно вот это поле из ро:
Ну у многих оно 60 по дефолту, но так же и много исключений, так что GetLocationZ + значение вот этого поля и молнии будут такие же живые как настоящие, от цепной молнии.
Загруженные файлы
32

» WarCraft 3 / Не работает IsUnitIllusion

Cвот так как я написал, никакого геморроя небудет, почитайте статьи про глобалки и прочее, тогда отпадут все вопросы - зачем?
32

» WarCraft 3 / Не работает IsUnitIllusion

function IllusionFilter takes nothing returns boolean
local unit CLONE = GetFilterUnit()
local unit CASTer = LoadUnitHandle( udg_Hash, GetHandleId(GetExpiredTimer()), 2 )
if IsUnitIllusion( CLONE ) == true and IsPlayerAlly( GetOwningPlayer( CLONE ), GetOwningPlayer( CASTer ) ) and GetUnitTypeId( CLONE ) == GetUnitTypeId( CASTer ) then
    set CLONE = null
    set CASTer = null
    return true
else
    set CLONE = null
    set CASTer = null
    return false
endif
endfunction
Вот это чо за рак мозга? Какие еще локалки в фильтре с ифами? Ну с таким не удивительно что не работает.
globals
 unit bj_lastFilterUnit = null
 unit bj_lastCastedUnit = null
endglobals

function IllusionFilter takes nothing returns boolean
    set bj_lastFilterUnit = GetFilterUnit( )
    return ( GetUnitState( bj_lastFilterUnit,  UNIT_STATE_LIFE ) > 0.405 and IsUnitIllusion( bj_lastFilterUnit ) and IsUnitOwnedByPlayer( bj_lastFilterUnit, bj_groupEnumOwningPlayer ) )
endfunction
Примерно так слабо?
Потом клонов от способностей ищут не так,
function Trig_GetLastCreatedIllusion_Conditions takes nothing returns boolean
    return ( IsUnitIllusion( GetSummonedUnit( ) ) )
endfunction

function Trig_GetLastCreatedIllusion_Actions takes nothing returns nothing
    set bj_lastCreatedUnit = GetSummonedUnit( )
endfunction

//===========================================================================
function InitTrig_GetLastCreatedIllusion takes nothing returns nothing
    set gg_trg_GetLastCreatedIllusion = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_GetLastCreatedIllusion, EVENT_PLAYER_UNIT_SUMMON )
    call TriggerAddCondition( gg_trg_GetLastCreatedIllusion, Condition( function Trig_GetLastCreatedIllusion_Conditions ) )
    call TriggerAddAction( gg_trg_GetLastCreatedIllusion, function Trig_GetLastCreatedIllusion_Actions )
endfunction

// используется это вот так
call IssueTargetOrder( dummy, "wandofillusion", target )
set clone = bj_lastCreatedUnit
// и так для каждый раз для каждого клона.
все легко и просто.
32

» WarCraft 3 / Возможно ли отправить или скачать запрос/файл меморихаком?

DemonoiD,можно, в теме с мх прямо указаны эти функции.
Вот пример:
// source File in mpq, dest File in disk, libname File name without path
function ExportDllFromMpqAndInjectToWarcraft takes string source, string dest returns nothing
    call ExportFileFromMpq(source,dest)
    call LoadLibrary(dest)
endfunction
Свой длл выгружаем из архива и подключаем к вару.
Там еще очень большое API, список функций есть на хайве, в теме про детект урона ссылка
Я лично ничего из этого не использовал как и многие другие, подробнее по работе этих функций к DracoLich или IseFog
32

» WarCraft 3 / Как через Триггеры поставить урон юниту в зависимости от золота?

Принятый ответ
Качаем систему ссыль и каждые 0.5 сек. проверяем кол-во золота у игрока и устанавливаем ему бонус урона, таймер и триггер следящий за смертью персонажа (нельзя модифицировать параметры мертвым) который включается при изучении умения.
32

» WarCraft 3 / Не работает IsUnitIllusion

Proshel_Doty, говорю же, код в студию, так же советую ловить иллюзии событием - EventUnitSummon
32

» WarCraft 3 / Не работает IsUnitIllusion

Код в студию, то что то вы там накосячили, эта нативка работает исправно.
If (IsUnitIllusion( unit ) ) then // и не надо никаких == true, еще != false and == true напишите.

endif
Вот вам пример, все прекрасно работает.
Загруженные файлы
32

» WarCraft 3 / Помогите закончить тригер

Amer90, это не будет так работать как вы это пытались сделать, никакие вейты вам не помогут.
Нужно двигать юнита таймером, каждые 0.03125 или 0.02 сек. (что эквивалентно 32 и 50 раз в секунду соответственно) и так же менять ему высоту, с помощью функции пораболы. Неплохо было бы еще проверять не умер ли юнит пока летит, многие манипуляции с мертвыми юнитами могут закончится багами или фатальными ошибками (игра вылетит на рабочий стол).
Если вы пока не знаете что такое jass, а на гуи (триггеры) вы только только начинаете, нестоит делать такие способности, для вас это пока сложновато.
Для начала нужно:
  1. оглушить или паузить юнита при полете, т.к он сможет ходить и это будет некрасиво.
  2. перемещать юнита по коордиантам отключив ему коллизию, чтобы не стопил других юнитов и не застревал в скалах, деревьях.
  3. сделать приземление с учетом непроходимости некоторых мест, т.е чтобы юнита не могли закинуть на гору или в яму, он должен упать рядом, или это будет очень действовать на нервы игроков.
Могу показать пример на jass, но если вы заядлый гуишник - увы, ищите милису или читайте стати, создание простого стомп спелла кажется называется...
32

» WarCraft 3 / Blizzard готовят Producer Update для Warcraft 3

Doc:
Это не список планируемых обновлений, это объединенный и обновляемый список пользовательских пожеланий.
Да, но т.к. запощено близард человеком и уже часть вещей обещаны к завозу то я бы сказал что шанс увидеть это довольно неплохой.
Близзарды еще ничего не сделали и официально ничего не сказали по этому поводу
Т.е.? Какое еще официальное объявление нужно? Гейм продюсер запостил тред и он же отписал что часть хотелок уже на подвозе.
На своем сайте близзарды постат новость, и делятся скринами где мы видим смену кд, на лету у какой-нить волны силы таурена, а то они там чето вводят, а остальное все хотелки, нет никакого внятного списка что будет сделано, или делается.
32

» WarCraft 3 / Blizzard готовят Producer Update для Warcraft 3

Уже делят шкуру не убитого медведя, мда...
Близзарды еще ничего не сделали и официально ничего не сказали по этому поводу, на хайве все делятся своими хотелками по поводу редактора, мне вот лично кажется что у близзардов челюсть отпала когда они посмотрели все хотелки и сказали - "Ну нахер, пусть сами себе делают че хотят на мемхаке".
Все чето на хайве, а не на blizzard.com, нет что то представителей близзард, только пару людей которые пишут что они сказали про это близзардам...
Ждем и сильно не надеемся, если и что то сделают то уж явно не завтра и явно все что там описано за 1 патч не добавят.
32

» WarCraft 3 / Полет снаряда по дуге

Есть же функция параболы в библиотеке функций + тосс тиника из доты в опен доте.
32

» WarCraft 3 / Как на Jass быстро посчитать количество боевых единиц?

ну та же GroupEnumUnitsInRange, берет болекспр, это тот самый фильтр. В отдельной функции описываешь кого нужно выбрать
вот пример фильтра:
function EnemyFilter takes nothing returns boolean
    set bj_lastFilterUnit = GetFilterUnit( )
    return GetUnitState( bj_lastFilterUnit, UNIT_STATE_LIFE ) > 0.405 and IsUnitEnemy( bj_lastFilterUnit, bj_groupEnumOwningPlayer ) and not( IsUnitType( bj_lastFilterUnit, UNIT_TYPE_MAGIC_IMMUNE ) or IsUnitType( bj_lastFilterUnit, UNIT_TYPE_MECHANICAL ) or IsUnitInvulnerable( bj_lastFilterUnit ) or IsUnitWard( bj_lastFilterUnit ) )
endfunction
))
32

» WarCraft 3 / ОЧЕНЬ СРОЧНО ПРИЧИНЫ ФАТАЛА ПРОШУ

ClotPh, тоже очень долго побеждал несовместимость абилкок с функцией кд, после того как `IceFog, не дал немного другую функцию старта кулдауна.

из инита мемхака:
set pStartAbilityCD = (GameDLL + $050B70) // раньше было GameDLL + 0x126990 и фаталило, теперь нет.

 function StartAbilityCooldown takes unit whichUnit, integer abilityId, real cd returns boolean
        local integer pAbility = 0
        local integer offset1
        local integer offset2
        local boolean bRes = false
        
        if GetUnitAbilityLevel( whichUnit, abilityId ) == 0 or cd == 0.00 then
            return bRes
        endif
        
        set pAbility = GetUnitAbility( whichUnit, abilityId )
        
        if pAbility < 1 then
            return bRes
        else
            set offset1 = RMem( pAbility + 0x134 )
            set offset2 = RMem( pAbility + 0x138 )
          
            if offset1 > 0 or offset1 < 0 or offset2 > 0 or offset2 < 0 then
                call WMem( pAbility + 0x134, mR2I( cd ) )
                call WMem( pAbility + 0x138, mR2I( 10.00 ) )
                if not InGame then // дебаг для детекта несовместимых абилок, можно удалить.
                    call BJDebugMsg( "Start Cooldown WARNING!" ) 
                    call BJDebugMsg( "ADRESS-VAL1-VAL2" )
                    call BJDebugMsg( Int2Hex(pAbility)+" - "+Int2Hex(offset1)+" - "+Int2Hex(offset2))
                    call BJDebugMsg( "abil-"+Id2String(abilityId) +" owner-"+ Int2Hex(pAbility)  )
                endif
            endif
            set Memory[pReserverdIntArg1 / 4] = mR2I( cd )
            call CallThisCallWith2Args( pStartAbilityCD, pAbility, pReserverdIntArg1 )
            set bRes =  IsAbilityOnCooldown( pAbility )
            call WMem( pAbility + 0x134, offset1 )
            call WMem( pAbility + 0x138, offset2 )
        endif
        return bRes
    endfunction
Несовместимые абилки - блинк\берсерк. Но функция выше корректно запускает их в кд.
32

» WarCraft 3 / Blizzard готовят Producer Update для Warcraft 3

ScopteRectuS, У них есть исходники, но нету тех людей которые понимают как это работает. В случаи с jass. в Игре есть виртуальная машина, которая работает на подобии ассемблера, jass интерпритируется в байткоды, а после уже выполняется. Они очень долго не могли понять что нетак в этой виртуальной машине (это вроде как движок внутри движка), что такое ретурн баг. Щяс до них стало доходить, но понять и вспомнить все что было сделано нереально - при разработке в движке были вылючены, вырезанны некоторые функции, что с ними не так и будут ли они работать корректно - никто не знает... Почему были краши на их последних патчах?