32

» WarCraft 3 / Передача локальной переменной

Frzctions, вот примерно так можно сделать, но для этого нужно включать думалку.
код jass
globals
    group TempGroup = CreateGroup()
    unit bj_lastFilterUnit = null
endglobals

function Trig_Dark_Explosion_Copy_Conditions takes nothing returns boolean
    return ( GetSpellAbilityId() == 'A005' )
endfunction

function Ally_Filter takes nothing returns boolean
    set bj_lastFilterUnit = GetFilterUnit()
    return GetWidgetLife(bj_lastFilterUnit) > 0.405 and IsUnitAlly( bj_lastFilterUnit, bj_groupEnumOwningPlayer) and GetUnitState( bj_lastFilterUnit, UNIT_STATE_LIFE ) < GetUnitState( bj_lastFilterUnit, UNIT_STATE_MAX_LIFE ) and not IsUnitType( bj_lastFilterUnit, UNIT_TYPE_STRUCTURE ) // через and можно дополнить критерии отбора союзников
endfunction

function Enemy_Filter takes nothing returns boolean
    set bj_lastFilterUnit = GetFilterUnit()
    return GetWidgetLife(bj_lastFilterUnit) > 0.405 and IsUnitEnemy(bj_lastFilterUnit, bj_groupEnumOwningPlayer) and not IsUnitType( bj_lastFilterUnit, UNIT_TYPE_STRUCTURE ) // через and можно дополнить критерии отбора противников
endfunction

function Trig_Dark_Explosion_Copy_Actions takes nothing returns nothing
    local unit caster = GetSpellAbilityUnit()
    local real cx = GetUnitX(caster)
    local real cy = GetUnitY(caster)
    local real heal = RMaxBJ( 25.00, GetHeroStr( caster, true ) * 3.00 )
    local real damage =  RMaxBJ( 25.00, GetHeroStr( caster, true) * 25.00 )
    local unit enumunit = null
    
    set bj_groupEnumOwningPlayer = GetOwningPlayer( caster )
    // союзники
    call GroupClear(TempGroup)
    call GroupEnumUnitsInRange( TempGroup, cx, cy, 650.00, Condition( function Ally_Filter) )
    
    loop 
        set enumunit = FirstOfGroup( TempGroup )
        exitwhen enumunit == null
        call GroupRemoveUnit( TempGroup, enumunit )
        call SetUnitState( enumunit, UNIT_STATE_LIFE, GetUnitState( enumunit, UNIT_STATE_LIFE ) + heal )
        call DestroyEffect(AddSpecialEffectTarget( "Abilities\\Spells\\Undead\\VampiricAura\\VampiricAuraTarget.mdl", enumunit, "chest" ))
    endloop
    // враги
    call GroupClear(TempGroup)
    call GroupEnumUnitsInRange( TempGroup, cx, cy, 650.00, Condition( function Enemy_Filter) )

      loop 
        set enumunit = FirstOfGroup( TempGroup )
        exitwhen enumunit == null
        call GroupRemoveUnit( TempGroup, enumunit )
        call UnitDamageTarget( caster, enumunit, damage, false, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_FIRE, WEAPON_TYPE_WHOKNOWS )
        call DestroyEffect(AddSpecialEffectTarget( "Abilities\\Spells\\Undead\\VampiricAura\\VampiricAuraTarget.mdl", enumunit, "chest" ))
    endloop
    
    set enumunit = null
    set caster  = null
endfunction

//===========================================================================
function InitTrig_Dark_Explosion_Copy takes nothing returns nothing
    set gg_trg_Dark_Explosion_Copy = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Dark_Explosion_Copy, EVENT_PLAYER_UNIT_SPELL_CAST )
    call TriggerAddCondition( gg_trg_Dark_Explosion_Copy, Condition( function Trig_Dark_Explosion_Copy_Conditions ) )
    call TriggerAddAction( gg_trg_Dark_Explosion_Copy, function Trig_Dark_Explosion_Copy_Actions )
endfunction
Frzctions, еще раз, для переноса неких данных из одной функции в другую, которая не вызывается напрямую через call юзают либо хештаблицы, либо глобальные переменные, они если что для этого и созданы, ну либо строят код так чтобы переносить ничего не потребовалось...
32

» WarCraft 3 / Передача локальной переменной

Чтобы передать в группу переменную, нужна либо хештаблица либо глобальная переменная, так же в группе будет работать GetTriggerUnit() - тот кто применил спелл.
32

» WarCraft 3 / Передача локальной переменной

Frzctions, ерунда, причем тут урон от кастера? Нанесение урона не может сбивать приказы, да и у тебя вовсе всем наносит урон, включая кастера.
32

» WarCraft 3 / Передача локальной переменной

Frzctions, какая то глупость, полно утечек, нахрена спецэффект и юнита создавать, кастера мало? че собрался сделать?
32

» WarCraft 3 / Передача локальной переменной

Frzctions, переписать весь этот ужас с нуля, потом кто такой udg_u_dark1, потом как насчет кода а не скрина.
32

» WarCraft 3 / Сохранение приказов v2.0

Steal nerves, самое стремное что любой приказ через IssueXXXOrder сбивает всю очередь, только стан умеет сдвигать всю очередь и сувать свой приказ. Но это можно абузить.
32

» WarCraft 3 / Отследить разложения юнита.

Принятый ответ
EVENT_UNIT_DECAY или как то так, вроде есть на конкретного юнита и всех юнитов конкретного игрока.
А насчет вокскрес или нет, это как? Юниты сами не воксресают как и герои, умер значит умер, на воскрешения героя есть отдельное событие.
32

» WarCraft 3 / Удаление лишнего

Это не так то просто без редактора. РО коды объектов, просто целые числа в порядке возрастания, вам придется переставить все нужные объекты так чтобы не осталось провалов, насколько помню даже в редакторе с этим были проблемы если удалить кучу объектов созданных когда то давно, самыми первыми.
32

» WarCraft 3 / Локальные переменне при нескольких "вейтах"

Принятый ответ
TeX13, ненадо писать на гуи и плодить триггеры, у вас забита инит функция и происходит обрыв потока.
32

» WarCraft 3 / wait течет или капает?

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

» WarCraft 3 / Последовательность выполнения

Наверное ты вызываешь какое либо событие. Действия в варе идут строго линейно, вызов триггера или запуск события подразумевают что сначала выполнятся все действия в этих триггерах, а только потом продолжится выполнение потока который их вызвал. Проще говоря нанося урон, движок вара сначала выполнит все действия реагирующие на урон, а только потом продолжит выполнять код после нанесения урона.
32

» WarCraft 3 / Статы предметов

Это поле для кулдауниндикатора, т.к кулдаун на предметах мнимый, это поле ссылается на абилку от которой берется кд, если предметов с таким полем в инвентаре несколько - то на всех будет отрисовыватся кулдаун от 1, обычно в это поле записывают ту же абилку которая указана в способностях предметов, но это имеет смысл если предмет активируемый и не является руной.
32

» WarCraft 3 / Вычисляем по IP

Bergi_Bear, все за бывают про айкап лаунчер написанный непонятно кем, запускаемый от имени администратора.
А про взломанный\пиратский софт я вовсе промолчу.
32

» WarCraft 3 / Патч 1.31, скоро?

Doc, мда, прочитай внимательно. То что я написал, я писал о том что близзардам это не упало, получится шило на мыло, Чем жасс похож на луа - Достаточно посмотреть на него, не надо мне тут писать что виртуальная машина по другому устроена, jass скиповый язык, обрезанный до минимума что бы не глючило и все, и то мы все знаем что таки глюки с багами остались. Близзарды не возьмут целиком любой интерпретируемый язык и не включат его в варкравт, как бы вы не хотели, итого - луа\жасс\хреназ - все одно и тоже. Лечить все болячки долго и никому не упало, массив code - не сделают и не сделали, не потому что немогли или нельзя - а потому что разработчикам вара это ненужно и даже вредно, никакие ускорение и конструкции сверх стандартного в понимании близзов функционала нет и быть не может!
32

» WarCraft 3 / Реплей

Хобот назначает случайного игрока хвостом, у которого пинг получше, или первого играющего в списке.
32

» WarCraft 3 / Проверка файла мемхаком

Ну я же писал тебе про GetLocalPlayer(), развете тебе работа с локальными данными незнакома?
32

» WarCraft 3 / АнтиХак

Только потом нужно после изменения восстановить протект.
32

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

NazarPunk:
Bergi_Bear, а можно вообще написать свой лаунчер и хранить в карте .dll, как дота на айкапе)
Ну вот это дело и делает IseFog. Свой лаунчер, изначально для ускорение функционала мемхака, но не взлетело, оказалось как у айкапа для защиты публике важнее... Кто бы мог подумать?
32

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

NazarPunk, щяс ждемс пока IсeFog допилит свою тулу, и тогда будет ой как не просто раскусить это.