32

» WarCraft 3 / Проблема с мультибоардом

Есть действие задать ширину всем колонкам сразу, его юзай, и размер выбери побольше.
32

» WarCraft 3 / Syntax Error, unexpected: "(" ? - Ошибка в Jass.

Mate, очевидно что прежде чем триггеру добавить действие, его нужно сначала написать, у этой функции, назовем её TriggerAction не должно быть аргументов,
function TriggerActions takes nothing returns nothing
Функцию эту нужно обьвить выше того места где ты собрался добавлять триггеру действие.
А уже в самой функции ты будешь удалять юнитов, ссылаясь на GetTriggerUnit() - это тот на кого сработало событие триггера, разумеется это работает на те события, которые напрямую связанны с юнитом.
32

» WarCraft 3 / Проблема с мультибоардом

MKDimon, код в студию, вы уже задолбали ей богу, как мы будем гадать что вы сделали?
32

» WarCraft 3 / Syntax Error, unexpected: "(" ? - Ошибка в Jass.

Mate, а почему вы пытаетесь добавить триггеру действие, ссылаясь на нативную функцию которая требует аргументы.
функция TriggerAddAction требует триггера и code, ссылку на функцию, при этом у этой функции не должно быть ни входных аргументов.
32

» WarCraft 3 / Помогите со спелом типа waveform морфа

Блин я в этом рус гуи нихрена понять немогу, спелл примитив, если как в доте без изисков и по простому - опен дота, там он есть на ретурнбаге (изи меняется на хт).
32

» WarCraft 3 / ZinC: Похищение жизни

А че эффект молнии идет откуда то из жопы? Неужели бд нельзя было с высотой сделать?
32

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

Frzctions, ну ты не представляешь синтаксис jaas'a? Или что тебе непонятно, функция может принимать аргументы или возвращать, но возвращает всегда лишь 1 аргумент.
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 течет или капает?

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